diff --git a/.copier-answers.yml b/.copier-answers.yml index 1f6da59ca..07716b69f 100644 --- a/.copier-answers.yml +++ b/.copier-answers.yml @@ -1,8 +1,7 @@ # Do NOT update manually; changes here will be overwritten by Copier -_commit: v1.14.2 +_commit: v1.17.2 _src_path: gh:oca/oca-addons-repo-template ci: GitHub -dependency_installation_mode: PIP generate_requirements_txt: true github_check_license: true github_ci_extra_env: {} @@ -11,6 +10,7 @@ github_enable_makepot: true github_enable_stale_action: true github_enforce_dev_status_compatibility: true include_wkhtmltopdf: false +odoo_test_flavor: Both odoo_version: 16.0 org_name: Odoo Community Association (OCA) org_slug: OCA @@ -20,6 +20,4 @@ repo_description: This repository hosts additionnal parsers and import features repo_name: OCA bank statement import modules for Odoo repo_slug: bank-statement-import repo_website: https://github.com/OCA/bank-statement-import -travis_apt_packages: [] -travis_apt_sources: [] diff --git a/.eslintrc.yml b/.eslintrc.yml index 9429bc688..fed88d70d 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -22,6 +22,7 @@ globals: odoo: readonly openerp: readonly owl: readonly + luxon: readonly # Styling is handled by Prettier, so we only need to enable AST rules; # see https://github.com/OCA/maintainer-quality-tools/pull/618#issuecomment-558576890 diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index 23e6e58d6..38b0ba110 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -13,8 +13,10 @@ jobs: pre-commit: runs-on: ubuntu-22.04 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: actions/setup-python@v2 + with: + python-version: "3.11" - name: Get python version run: echo "PY=$(python -VV | sha256sum | cut -d' ' -f1)" >> $GITHUB_ENV - uses: actions/cache@v1 @@ -25,6 +27,15 @@ jobs: run: pip install pre-commit - name: Run pre-commit run: pre-commit run --all-files --show-diff-on-failure --color=always + env: + # Consider valid a PR that changes README fragments but doesn't + # change the README.rst file itself. It's not really a problem + # because the bot will update it anyway after merge. This way, we + # lower the barrier for functional contributors that want to fix the + # readme fragments, while still letting developers get README + # auto-generated (which also helps functionals when using runboat). + # DOCS https://pre-commit.com/#temporarily-disabling-hooks + SKIP: oca-gen-addon-readme - name: Check that all files generated by pre-commit are in git run: | newfiles="$(git ls-files --others --exclude-from=.gitignore)" diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f1b2b9fd6..e1af7438f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest name: Detect unreleased dependencies steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - run: | for reqfile in requirements.txt test-requirements.txt ; do if [ -f ${reqfile} ] ; then @@ -36,10 +36,10 @@ jobs: matrix: include: - container: ghcr.io/oca/oca-ci/py3.10-odoo16.0:latest - makepot: "true" name: test with Odoo - container: ghcr.io/oca/oca-ci/py3.10-ocb16.0:latest name: test with OCB + makepot: "true" services: postgres: image: postgres:12.0 @@ -50,7 +50,7 @@ jobs: ports: - 5432:5432 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: persist-credentials: false - name: Install addons and dependencies diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 460e7d874..bdda468a6 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -12,6 +12,8 @@ exclude: | /static/(src/)?lib/| # Repos using Sphinx to generate docs don't need prettying ^docs/_templates/.*\.html$| + # Don't bother non-technical authors with formatting issues in docs + readme/.*\.(rst|md)$| # You don't usually want a bot to modify your legal texts (LICENSE.*|COPYING.*) default_language_version: @@ -33,12 +35,24 @@ repos: language: fail files: '[a-zA-Z0-9_]*/i18n/en\.po$' - repo: https://github.com/oca/maintainer-tools - rev: 4cd2b852214dead80822e93e6749b16f2785b2fe + rev: 969238e47c07d0c40573acff81d170f63245d738 hooks: # update the NOT INSTALLABLE ADDONS section above - id: oca-update-pre-commit-excluded-addons - id: oca-fix-manifest-website args: ["https://github.com/OCA/bank-statement-import"] + - id: oca-gen-addon-readme + args: + - --addons-dir=. + - --branch=16.0 + - --org-name=OCA + - --repo-name=bank-statement-import + - --if-source-changed + - repo: https://github.com/OCA/odoo-pre-commit-hooks + rev: v0.0.25 + hooks: + - id: oca-checks-odoo-module + - id: oca-checks-po - repo: https://github.com/myint/autoflake rev: v1.6.1 hooks: @@ -123,9 +137,9 @@ repos: hooks: - id: flake8 name: flake8 - additional_dependencies: ["flake8-bugbear==21.9.2"] + additional_dependencies: ["flake8-bugbear==21.9.2", "importlib-metadata<5.0.0"] - repo: https://github.com/OCA/pylint-odoo - rev: 7.0.2 + rev: v8.0.19 hooks: - id: pylint_odoo name: pylint with optional checks diff --git a/.pylintrc b/.pylintrc index cad9c2f1b..554913276 100644 --- a/.pylintrc +++ b/.pylintrc @@ -5,12 +5,12 @@ load-plugins=pylint_odoo score=n [ODOOLINT] -readme_template_url="https://github.com/OCA/maintainer-tools/blob/master/template/module/README.rst" -manifest_required_authors=Odoo Community Association (OCA) -manifest_required_keys=license -manifest_deprecated_keys=description,active -license_allowed=AGPL-3,GPL-2,GPL-2 or any later version,GPL-3,GPL-3 or any later version,LGPL-3 -valid_odoo_versions=16.0 +readme-template-url="https://github.com/OCA/maintainer-tools/blob/master/template/module/README.rst" +manifest-required-authors=Odoo Community Association (OCA) +manifest-required-keys=license +manifest-deprecated-keys=description,active +license-allowed=AGPL-3,GPL-2,GPL-2 or any later version,GPL-3,GPL-3 or any later version,LGPL-3 +valid-odoo-versions=16.0 [MESSAGES CONTROL] disable=all diff --git a/.pylintrc-mandatory b/.pylintrc-mandatory index fa4b81c41..7a0cd4efe 100644 --- a/.pylintrc-mandatory +++ b/.pylintrc-mandatory @@ -4,12 +4,12 @@ load-plugins=pylint_odoo score=n [ODOOLINT] -readme_template_url="https://github.com/OCA/maintainer-tools/blob/master/template/module/README.rst" -manifest_required_authors=Odoo Community Association (OCA) -manifest_required_keys=license -manifest_deprecated_keys=description,active -license_allowed=AGPL-3,GPL-2,GPL-2 or any later version,GPL-3,GPL-3 or any later version,LGPL-3 -valid_odoo_versions=16.0 +readme-template-url="https://github.com/OCA/maintainer-tools/blob/master/template/module/README.rst" +manifest-required-authors=Odoo Community Association (OCA) +manifest-required-keys=license +manifest-deprecated-keys=description,active +license-allowed=AGPL-3,GPL-2,GPL-2 or any later version,GPL-3,GPL-3 or any later version,LGPL-3 +valid-odoo-versions=16.0 [MESSAGES CONTROL] disable=all diff --git a/README.md b/README.md index cce5686f4..efd2d10af 100644 --- a/README.md +++ b/README.md @@ -22,8 +22,14 @@ Available addons addon | version | maintainers | summary --- | --- | --- | --- [account_statement_import_base](account_statement_import_base/) | 16.0.1.0.0 | [![alexis-via](https://github.com/alexis-via.png?size=30px)](https://github.com/alexis-via) | Base module for Bank Statement Import -[account_statement_import_file](account_statement_import_file/) | 16.0.1.0.0 | [![alexis-via](https://github.com/alexis-via.png?size=30px)](https://github.com/alexis-via) | Import Statement Files +[account_statement_import_camt](account_statement_import_camt/) | 16.0.1.0.0 | | CAMT Format Bank Statements Import +[account_statement_import_camt54](account_statement_import_camt54/) | 16.0.1.0.0 | | Bank Account Camt54 Import +[account_statement_import_file](account_statement_import_file/) | 16.0.1.0.1 | [![alexis-via](https://github.com/alexis-via.png?size=30px)](https://github.com/alexis-via) | Import Statement Files [account_statement_import_ofx](account_statement_import_ofx/) | 16.0.1.0.0 | [![alexis-via](https://github.com/alexis-via.png?size=30px)](https://github.com/alexis-via) | Import OFX Bank Statement +[account_statement_import_online](account_statement_import_online/) | 16.0.1.0.0 | [![alexey-pelykh](https://github.com/alexey-pelykh.png?size=30px)](https://github.com/alexey-pelykh) | Online bank statements update +[account_statement_import_online_paypal](account_statement_import_online_paypal/) | 16.0.1.0.0 | [![alexey-pelykh](https://github.com/alexey-pelykh.png?size=30px)](https://github.com/alexey-pelykh) | Online bank statements for PayPal.com +[account_statement_import_online_ponto](account_statement_import_online_ponto/) | 16.0.1.0.0 | | Online Bank Statements: MyPonto.com +[account_statement_import_sheet_file](account_statement_import_sheet_file/) | 16.0.1.0.0 | [![alexey-pelykh](https://github.com/alexey-pelykh.png?size=30px)](https://github.com/alexey-pelykh) | Import TXT/CSV or XLSX files as Bank Statements in Odoo [//]: # (end addons) diff --git a/account_statement_import_base/README.rst b/account_statement_import_base/README.rst index 445d3cc87..dced4049e 100644 --- a/account_statement_import_base/README.rst +++ b/account_statement_import_base/README.rst @@ -2,10 +2,13 @@ Base module for Bank Statement Import ===================================== -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:9fa09d431b4c7e1698f01c7fd2250709e7c51a8ad373c7b6bdefe84c3ead0541 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Mature-brightgreen.png :target: https://odoo-community.org/page/development-status @@ -19,11 +22,11 @@ Base module for Bank Statement Import .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png :target: https://translation.odoo-community.org/projects/bank-statement-import-16-0/bank-statement-import-16-0-account_statement_import_base :alt: Translate me on Weblate -.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/174/16.0 - :alt: Try me on Runbot +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/bank-statement-import&target_branch=16.0 + :alt: Try me on Runboat -|badge1| |badge2| |badge3| |badge4| |badge5| +|badge1| |badge2| |badge3| |badge4| |badge5| This is a technical module designed to share code between 2 other modules: @@ -40,7 +43,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. -If you spotted it first, help us smashing it by providing a detailed and welcomed +If you spotted it first, help us to smash it by providing a detailed and welcomed `feedback `_. Do not contact contributors directly about support or help with technical issues. diff --git a/account_statement_import_base/i18n/es.po b/account_statement_import_base/i18n/es.po new file mode 100644 index 000000000..fa6c1b6ba --- /dev/null +++ b/account_statement_import_base/i18n/es.po @@ -0,0 +1,43 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_statement_import_base +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-06-02 14:10+0000\n" +"Last-Translator: gelo joga Rodríguez \n" +"Language-Team: none\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" +"X-Generator: Weblate 4.17\n" + +#. module: account_statement_import_base +#: model:ir.model.constraint,message:account_statement_import_base.constraint_account_bank_statement_line_unique_import_id +msgid "A bank account transaction can be imported only once!" +msgstr "¡Una transacción bancaria sólo se puede importar una vez!" + +#. module: account_statement_import_base +#: model:ir.model,name:account_statement_import_base.model_account_bank_statement_line +msgid "Bank Statement Line" +msgstr "Línea de extracto bancario" + +#. module: account_statement_import_base +#: model:ir.model.fields,field_description:account_statement_import_base.field_account_bank_statement_line__unique_import_id +msgid "Import ID" +msgstr "ID importación" + +#. module: account_statement_import_base +#: model:ir.model,name:account_statement_import_base.model_account_journal +msgid "Journal" +msgstr "Diario" + +#. module: account_statement_import_base +#: model:ir.model.fields,field_description:account_statement_import_base.field_account_bank_statement_line__raw_data +#: model_terms:ir.ui.view,arch_db:account_statement_import_base.account_bank_statement_line_form +msgid "Raw Data" +msgstr "Datos sin procesar" diff --git a/account_statement_import_base/i18n/fr.po b/account_statement_import_base/i18n/fr.po new file mode 100644 index 000000000..b9f54e5e6 --- /dev/null +++ b/account_statement_import_base/i18n/fr.po @@ -0,0 +1,43 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_statement_import_base +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-06-08 14:08+0000\n" +"Last-Translator: Alexis de Lattre \n" +"Language-Team: none\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" +"X-Generator: Weblate 4.17\n" + +#. module: account_statement_import_base +#: model:ir.model.constraint,message:account_statement_import_base.constraint_account_bank_statement_line_unique_import_id +msgid "A bank account transaction can be imported only once!" +msgstr "Une transaction bancaire ne peut être importée qu'une seule fois !" + +#. module: account_statement_import_base +#: model:ir.model,name:account_statement_import_base.model_account_bank_statement_line +msgid "Bank Statement Line" +msgstr "Ligne de relevé de compte" + +#. module: account_statement_import_base +#: model:ir.model.fields,field_description:account_statement_import_base.field_account_bank_statement_line__unique_import_id +msgid "Import ID" +msgstr "Identifiant d'import" + +#. module: account_statement_import_base +#: model:ir.model,name:account_statement_import_base.model_account_journal +msgid "Journal" +msgstr "Journal" + +#. module: account_statement_import_base +#: model:ir.model.fields,field_description:account_statement_import_base.field_account_bank_statement_line__raw_data +#: model_terms:ir.ui.view,arch_db:account_statement_import_base.account_bank_statement_line_form +msgid "Raw Data" +msgstr "Données brutes" diff --git a/account_statement_import_base/i18n/hr.po b/account_statement_import_base/i18n/hr.po new file mode 100644 index 000000000..ff931aff2 --- /dev/null +++ b/account_statement_import_base/i18n/hr.po @@ -0,0 +1,44 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_statement_import_base +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-06-02 14:10+0000\n" +"Last-Translator: Bole \n" +"Language-Team: none\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" +"X-Generator: Weblate 4.17\n" + +#. module: account_statement_import_base +#: model:ir.model.constraint,message:account_statement_import_base.constraint_account_bank_statement_line_unique_import_id +msgid "A bank account transaction can be imported only once!" +msgstr "Transakcija po bankovnom računu može biti uvežena samo jednom!" + +#. module: account_statement_import_base +#: model:ir.model,name:account_statement_import_base.model_account_bank_statement_line +msgid "Bank Statement Line" +msgstr "Stavka izvoda" + +#. module: account_statement_import_base +#: model:ir.model.fields,field_description:account_statement_import_base.field_account_bank_statement_line__unique_import_id +msgid "Import ID" +msgstr "ID Uvoza" + +#. module: account_statement_import_base +#: model:ir.model,name:account_statement_import_base.model_account_journal +msgid "Journal" +msgstr "Dnevnik" + +#. module: account_statement_import_base +#: model:ir.model.fields,field_description:account_statement_import_base.field_account_bank_statement_line__raw_data +#: model_terms:ir.ui.view,arch_db:account_statement_import_base.account_bank_statement_line_form +msgid "Raw Data" +msgstr "Sirovi podaci" diff --git a/account_statement_import_base/i18n/pt_BR.po b/account_statement_import_base/i18n/pt_BR.po new file mode 100644 index 000000000..a7352273d --- /dev/null +++ b/account_statement_import_base/i18n/pt_BR.po @@ -0,0 +1,43 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_statement_import_base +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-06-27 16:10+0000\n" +"Last-Translator: Adriano Prado \n" +"Language-Team: none\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" +"X-Generator: Weblate 4.17\n" + +#. module: account_statement_import_base +#: model:ir.model.constraint,message:account_statement_import_base.constraint_account_bank_statement_line_unique_import_id +msgid "A bank account transaction can be imported only once!" +msgstr "Uma transação de conta bancária pode ser importada apenas uma vez!" + +#. module: account_statement_import_base +#: model:ir.model,name:account_statement_import_base.model_account_bank_statement_line +msgid "Bank Statement Line" +msgstr "Linha de Extrato Bancário" + +#. module: account_statement_import_base +#: model:ir.model.fields,field_description:account_statement_import_base.field_account_bank_statement_line__unique_import_id +msgid "Import ID" +msgstr "ID Importação" + +#. module: account_statement_import_base +#: model:ir.model,name:account_statement_import_base.model_account_journal +msgid "Journal" +msgstr "Diário" + +#. module: account_statement_import_base +#: model:ir.model.fields,field_description:account_statement_import_base.field_account_bank_statement_line__raw_data +#: model_terms:ir.ui.view,arch_db:account_statement_import_base.account_bank_statement_line_form +msgid "Raw Data" +msgstr "Dados Raw" diff --git a/account_statement_import_base/models/account_journal.py b/account_statement_import_base/models/account_journal.py index 3080fe74b..1d5f5b548 100644 --- a/account_statement_import_base/models/account_journal.py +++ b/account_statement_import_base/models/account_journal.py @@ -21,10 +21,10 @@ def _statement_line_import_speeddict(self): speeddict = {"account_number": {}} partner_banks = self.env["res.partner.bank"].search_read( [("company_id", "in", (False, self.company_id.id))], - ["acc_number", "partner_id"], + ["sanitized_acc_number", "partner_id"], ) for partner_bank in partner_banks: - speeddict["account_number"][partner_bank["acc_number"]] = { + speeddict["account_number"][partner_bank["sanitized_acc_number"]] = { "partner_id": partner_bank["partner_id"][0], "partner_bank_id": partner_bank["id"], } diff --git a/account_statement_import_base/static/description/index.html b/account_statement_import_base/static/description/index.html index 08d66b56c..0d7a670f5 100644 --- a/account_statement_import_base/static/description/index.html +++ b/account_statement_import_base/static/description/index.html @@ -1,20 +1,20 @@ - + - + Base module for Bank Statement Import + + +
+

CAMT Format Bank Statements Import

+ + +

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

+

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

+

Table of contents

+ +
+

Bug Tracker

+

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

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • Therp BV
  • +
+
+
+

Contributors

+ +
+
+

Other credits

+

The migration of this module from 15.0 to 16.0 was financially supported by Camptocamp

+
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

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

+

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

+

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

+
+
+
+ + diff --git a/account_statement_import_camt/test_files/golden-camt053-no-ntry.pydata b/account_statement_import_camt/test_files/golden-camt053-no-ntry.pydata new file mode 100644 index 000000000..ca89faa50 --- /dev/null +++ b/account_statement_import_camt/test_files/golden-camt053-no-ntry.pydata @@ -0,0 +1 @@ +(None, None, []) diff --git a/account_statement_import_camt/test_files/golden-camt053-txdtls.pydata b/account_statement_import_camt/test_files/golden-camt053-txdtls.pydata new file mode 100644 index 000000000..ed46eb922 --- /dev/null +++ b/account_statement_import_camt/test_files/golden-camt053-txdtls.pydata @@ -0,0 +1,44 @@ +('CHF', + 'CH1111000000123456789', + [{'balance_end_real': 79443.15, + 'balance_start': 75960.15, + 'date': '2017-03-22', + 'name': '20170323123456789012345', + 'transactions': [{'account_number': 'CH2222000000123456789', + 'amount': 2187.0, + 'date': '2017-03-22', + 'narration': 'Partner Name (RltdPties/Nm): Banque Cantonale Vaudoise\n' + 'Partner Account Number (RltdPties/Acct): CH2222000000123456789\n' + 'Transaction Date (BookgDt): 2017-03-22\n' + 'Reference: 302388292000011111111111111\n' + 'Communication: \n' + 'Transaction Type (BkTxCd): PMNT-RCDT-VCOM\n' + 'Additional Entry Information (AddtlNtryInf): CRÉDIT GROUPÉ BVR TRAITEMENT DU 22.03.2017 NUMÉRO CLIENT 01-70884-3 PAQUET ID: ' + '123456CHCAFEBABE\n' + 'Reversal Indicator (RvslInd): false\n' + 'Structured Reference (RmtInf/Strd/CdtrRefInf/Ref): 302388292000011111111111111\n' + 'Account Servicer Reference (Refs/AcctSvcrRef): 123456CHCAFEBABE\n' + 'Postal Address (PstlAdr): Place Saint-François | 14 | 1003 | Lausanne | CH1', + 'partner_name': 'Banque Cantonale Vaudoise', + 'payment_ref': '/', + 'ref': '302388292000011111111111111', + 'transaction_type': 'PMNT-RCDT-VCOM'}, + {'account_number': 'CH3333000000123456789', + 'amount': 1296.0, + 'date': '2017-03-22', + 'narration': 'Partner Name (RltdPties/Nm): Banque Cantonale Vaudoise\n' + 'Partner Account Number (RltdPties/Acct): CH3333000000123456789\n' + 'Transaction Date (BookgDt): 2017-03-22\n' + 'Reference: 302388292000022222222222222\n' + 'Communication: \n' + 'Transaction Type (BkTxCd): PMNT-RCDT-VCOM\n' + 'Additional Entry Information (AddtlNtryInf): CRÉDIT GROUPÉ BVR TRAITEMENT DU 22.03.2017 NUMÉRO CLIENT 01-70884-3 PAQUET ID: ' + '123456CHCAFEBABE\n' + 'Reversal Indicator (RvslInd): false\n' + 'Structured Reference (RmtInf/Strd/CdtrRefInf/Ref): 302388292000022222222222222\n' + 'Account Servicer Reference (Refs/AcctSvcrRef): 123456CHCAFEBABE\n' + 'Postal Address (PstlAdr): Place Saint-François | 14 | 1003 | Lausanne | CH2', + 'partner_name': 'Banque Cantonale Vaudoise', + 'payment_ref': '/', + 'ref': '302388292000022222222222222', + 'transaction_type': 'PMNT-RCDT-VCOM'}]}]) diff --git a/account_statement_import_camt/test_files/golden-camt053.pydata b/account_statement_import_camt/test_files/golden-camt053.pydata new file mode 100644 index 000000000..4124b70fa --- /dev/null +++ b/account_statement_import_camt/test_files/golden-camt053.pydata @@ -0,0 +1,85 @@ +('EUR', + 'NL77ABNA0574908765', + [{'balance_end_real': 15121.12, + 'balance_start': 15568.27, + 'date': '2014-01-05', + 'name': '1234Test/1', + 'transactions': [{'account_number': 'NL46ABNA0499998748', + 'amount': -754.25, + 'date': '2014-01-05', + 'narration': 'Partner Name (RltdPties/Nm): INSURANCE COMPANY TESTX\n' + 'Partner Account Number (RltdPties/Acct): NL46ABNA0499998748\n' + 'Transaction Date (BookgDt): 2014-01-05\n' + 'Reference: 435005714488-ABNO33052620\n' + 'Communication: \n' + 'Transaction Type (BkTxCd): PMNT-RDDT-ESDD\n' + 'Unstructured Reference (RmtInf/Ustrd): Insurance policy 857239PERIOD 01.01.2014 - 31.12.2014\n' + 'Additional Transaction Information (AddtlTxInf): MKB Insurance 859239PERIOD 01.01.2014 - 31.12.2014\n' + 'End To End Id (Refs/EndToEndId): 435005714488-ABNO33052620\n' + 'Instructed Id (Refs/InstrId): INNDNL2U20141231000142300002844\n' + 'Postal Address (PstlAdr): TEST STREET 20 | 1234 AB TESTCITY | NL', + 'partner_name': 'INSURANCE COMPANY TESTX', + 'payment_ref': 'MKB Insurance 859239PERIOD 01.01.2014 - 31.12.2014', + 'ref': '435005714488-ABNO33052620', + 'transaction_type': 'PMNT-RDDT-ESDD'}, + {'account_number': 'NL46ABNA0499998748', + 'amount': -564.05, + 'date': '2014-01-05', + 'narration': 'Partner Name (RltdPties/Nm): Test Customer\n' + 'Partner Account Number (RltdPties/Acct): NL46ABNA0499998748\n' + 'Transaction Date (BookgDt): 2014-01-05\n' + 'Reference: TESTBANK/NL/20141229/01206408\n' + 'Communication: \n' + 'Transaction Type (BkTxCd): PMNT-IDDT-UPDD\n' + 'Reversal Indicator (RvslInd): true\n' + 'Unstructured Reference (RmtInf/Ustrd): Direct Debit S14 0410\n' + 'Additional Transaction Information (AddtlTxInf): Direct debit S14 0410 AC07 Rek.nummer blokkade ' + 'TESTBANK/NL/20141229/01206408\n' + 'Return Reason Code (RtrInf/Rsn/Cd): AC06\n' + 'Return Reason Code (Proprietary) (RtrInf/Rsn/Prtry): AC06\n' + 'End To End Id (Refs/EndToEndId): TESTBANK/NL/20141229/01206408\n' + 'Instructed Id (Refs/InstrId): TESTBANK/NL/20141229/01206408\n' + 'Postal Address (PstlAdr): NL', + 'partner_name': 'Test Customer', + 'payment_ref': 'Direct debit S14 0410 AC07 Rek.nummer blokkade TESTBANK/NL/20141229/01206408', + 'ref': 'TESTBANK/NL/20141229/01206408', + 'transaction_type': 'PMNT-IDDT-UPDD'}, + {'account_number': 'NL46ABNA0499998748', + 'amount': -100.0, + 'date': '2014-01-05', + 'narration': 'Partner Name (RltdPties/Nm): Test Customer\n' + 'Partner Account Number (RltdPties/Acct): NL46ABNA0499998748\n' + 'Transaction Date (BookgDt): 2014-01-05\n' + 'Reference: TESTBANK/NL/20141229/01206407\n' + 'Communication: \n' + 'Transaction Type (BkTxCd): PMNT-IDDT-UPDD\n' + 'Reversal Indicator (RvslInd): true\n' + 'Unstructured Reference (RmtInf/Ustrd): Direct Debit S14 0410\n' + 'Additional Transaction Information (AddtlTxInf): Direct debit S14 0410 AC07 Rek.nummer blokkade ' + 'TESTBANK/NL/20141229/01206408\n' + 'Return Reason Code (RtrInf/Rsn/Cd): AC06\n' + 'Return Reason Code (Proprietary) (RtrInf/Rsn/Prtry): AC06\n' + 'End To End Id (Refs/EndToEndId): TESTBANK/NL/20141229/01206407\n' + 'Instructed Id (Refs/InstrId): TESTBANK/NL/20141229/01206407\n' + 'Postal Address (PstlAdr): NL', + 'partner_name': 'Test Customer', + 'payment_ref': 'Direct debit S14 0410 AC07 Rek.nummer blokkade TESTBANK/NL/20141229/01206408', + 'ref': 'TESTBANK/NL/20141229/01206407', + 'transaction_type': 'PMNT-IDDT-UPDD'}, + {'account_number': 'NL69ABNA0522123643', + 'amount': 1405.31, + 'date': '2014-01-05', + 'narration': 'Partner Name (RltdPties/Nm): 3rd party Media\n' + 'Partner Account Number (RltdPties/Acct): NL69ABNA0522123643\n' + 'Transaction Date (BookgDt): 2014-01-05\n' + 'Reference: 115\n' + 'Communication: \n' + 'Transaction Type (BkTxCd): PMNT-RCDT-ESCT\n' + 'Additional Transaction Information (AddtlTxInf): #RD PARTY MEDIA CUSNO 90782 4210773\n' + 'End To End Id (Refs/EndToEndId): 115\n' + 'Instructed Id (Refs/InstrId): INNDNL2U20140105000217200000708\n' + 'Postal Address (PstlAdr): SOMESTREET 570-A | 1276 ML HOUSCITY | NL', + 'partner_name': '3rd party Media', + 'payment_ref': '#RD PARTY MEDIA CUSNO 90782 4210773', + 'ref': '115', + 'transaction_type': 'PMNT-RCDT-ESCT'}]}]) diff --git a/account_statement_import_camt/test_files/golden-camt054.pydata b/account_statement_import_camt/test_files/golden-camt054.pydata new file mode 100644 index 000000000..79e01712d --- /dev/null +++ b/account_statement_import_camt/test_files/golden-camt054.pydata @@ -0,0 +1,26 @@ +('EUR', + 'NL77ABNA0574908765', + [{'balance_end_real': 0.0, + 'balance_start': 0.0, + 'date': '2022-01-26', + 'name': '20220120000000000000000', + 'transactions': [{'account_number': 'NL46ABNA0499998748', + 'amount': 5.0, + 'date': '2022-01-26', + 'narration': 'Partner Name (RltdPties/Nm): Test Customer\n' + 'Partner Account Number (RltdPties/Acct): NL46ABNA0499998748\n' + 'Transaction Date (BookgDt): 2022-01-26\n' + 'Reference: 000000000000000000000000003\n' + 'Communication: \n' + 'Transaction Type (BkTxCd): PMNT-RCDT-VCOM\n' + 'Additional Entry Information (AddtlNtryInf): Additional entry info\n' + 'Reversal Indicator (RvslInd): false\n' + 'Structured Reference (RmtInf/Strd/CdtrRefInf/Ref): 000000000000000000000000003\n' + 'Account Servicer Reference (Refs/AcctSvcrRef): 15180015077602405\n' + 'End To End Id (Refs/EndToEndId): ENDTOENDID-01\n' + 'Instructed Id (Refs/InstrId): MIB InstrId305-312MM20211231v1\n' + 'Postal Address (PstlAdr): Test street 1 | 1234 AB Test city', + 'partner_name': 'Test Customer', + 'payment_ref': 'MIB InstrId305-312MM20211231v1', + 'ref': '000000000000000000000000003', + 'transaction_type': 'PMNT-RCDT-VCOM'}]}]) diff --git a/account_statement_import_camt/test_files/test-camt053 b/account_statement_import_camt/test_files/test-camt053 new file mode 100644 index 000000000..1f15c84ce --- /dev/null +++ b/account_statement_import_camt/test_files/test-camt053 @@ -0,0 +1,289 @@ + + + + TESTBANK/NL/1420561226673 + 2014-01-06T16:20:26.673Z + + + 1234Test/1 + 2 + 2014-01-06T16:20:26.673Z + + 2014-01-05T00:00:00.000Z + 2014-01-05T23:59:59.999Z + + + + NL77ABNA0574908765 + + Example company + + + ABNANL2A + + + + + + + OPBD + + + 15568.27 + CRDT +
+
2014-01-05
+ +
+ + + + CLBD + + + 15121.12 + CRDT +
+
2014-01-05
+ +
+ + 754.25 + DBIT + BOOK + +
2014-01-05
+
+ +
2014-01-05
+
+ + + PMNT + + RDDT + ESDD + + + + EI + + + + + + INNDNL2U20141231000142300002844 + 435005714488-ABNO33052620 + 1880000341866 + + + + 754.25 + + + + + INSURANCE COMPANY TESTX + + TEST STREET 20 + 1234 AB TESTCITY + NL + + + + + NL46ABNA0499998748 + + + + + + + ABNANL2A + + + + + Insurance policy 857239PERIOD 01.01.2014 - 31.12.2014 + + MKB Insurance 859239PERIOD 01.01.2014 - 31.12.2014 + + +
+ + 664.05 + DBIT + true + BOOK + +
2014-01-05
+
+ +
2014-01-05
+
+ + + PMNT + + IDDT + UPDD + + + + EIST + + + + + 2014/125 + 2018/125-20141229-NORM + 2 + 664.05 + DBIT + + + + TESTBANK/NL/20141229/01206408 + TESTBANK/NL/20141229/01206408 + NL22ZZZ524885430000-C0125.1 + + + + 564.05 + + + + + Test Customer + + NL + + + + + NL46ABNA0499998748 + + + + + + + ABNANL2A + + + + + Direct Debit S14 0410 + + + + AC06 + + + Direct debit S14 0410 AC07 Rek.nummer blokkade TESTBANK/NL/20141229/01206408 + + + + TESTBANK/NL/20141229/01206407 + TESTBANK/NL/20141229/01206407 + NL22ZZZ524885430000-C0125.2 + + + + 100.00 + + + + + Test Customer + + NL + + + + + NL46ABNA0499998748 + + + + + + + ABNANL2A + + + + + Direct Debit S14 0410 + + + + AC06 + + + Direct debit S14 0410 AC07 Rek.nummer blokkade TESTBANK/NL/20141229/01206408 + + +
+ + 1405.31 + CRDT + BOOK + +
2014-01-05
+
+ +
2014-01-05
+
+ + + PMNT + + RCDT + ESCT + + + + ET + + + + + + INNDNL2U20140105000217200000708 + 115 + + + + 1405.31 + + + + + 3rd party Media + + SOMESTREET 570-A + 1276 ML HOUSCITY + NL + + + + + NL69ABNA0522123643 + + + + + + + ABNANL2A + + + + #RD PARTY MEDIA CUSNO 90782 4210773 + + +
+
+
+
diff --git a/account_statement_import_camt/test_files/test-camt053-no-ntry b/account_statement_import_camt/test_files/test-camt053-no-ntry new file mode 100644 index 000000000..03f8f629b --- /dev/null +++ b/account_statement_import_camt/test_files/test-camt053-no-ntry @@ -0,0 +1,52 @@ + + + + TESTBANK/NL/1420561226673 + 2014-01-06T16:20:26.673Z + + + 1234Test/1 + 2 + 2014-01-06T16:20:26.673Z + + 2014-01-05T00:00:00.000Z + 2014-01-05T23:59:59.999Z + + + + NL77ABNA0574908765 + + Example company + + + ABNANL2A + + + + + + + OPBD + + + 1520.76 + CRDT +
+
2014-01-05
+ +
+ + + + CLBD + + + 1520.76 + CRDT +
+
2014-01-05
+ +
+
+
+
diff --git a/account_statement_import_camt/test_files/test-camt053-txdtls b/account_statement_import_camt/test_files/test-camt053-txdtls new file mode 100644 index 000000000..cf7c38f2b --- /dev/null +++ b/account_statement_import_camt/test_files/test-camt053-txdtls @@ -0,0 +1,214 @@ + + + + + 20170323312345678900000 + 2017-03-23T14:47:00 + + 1 + true + + Test + + + 20170323123456789012345 + 58 + 2017-03-23T14:47:00 + + 2017-03-23T00:00:00 + 2017-03-23T23:59:59 + + + + CH1111000000123456789 + + + Open Net S. à r.l. Prilly + + + + + + OPBD + + + 75960.15 + CRDT +
+
2017-03-22
+ +
+ + + + CLBD + + + 79443.15 + CRDT +
+
2017-03-23
+ +
+ + 012345678 + 3483.00 + CRDT + false + BOOK + +
2017-03-22
+
+ +
2017-03-23
+
+ 20170323001234567891234567891234 + + + PMNT + + RCDT + VCOM + + + + + + 2 + + + + 123456CHCAFEBABE + + 01 + 123456CHCAFEBABE + + + 2187.00 + CRDT + + + PMNT + + RCDT + AUTT + + + + + + Banque Cantonale Vaudoise + + Place Saint-François + 14 + 1003 + Lausanne + CH1 + + + + + CH2222000000123456789 + + + + + + + POFICHBEXXX + POSTFINANCE AG + + MINGERSTRASSE 20 + 3030 BERNE + + + + + + + + + + ISR Reference + + + 302388292000011111111111111 + + ?REJECT?0 + + + + 2017-03-22T20:00:00 + + + + + 123456CHCAFEBABE + + 01 + 123456CHCAFEBABE + + + 1296.00 + CRDT + + + PMNT + + RCDT + AUTT + + + + + + Banque Cantonale Vaudoise + + Place Saint-François + 14 + 1003 + Lausanne + CH2 + + + + + CH3333000000123456789 + + + + + + + POFICHBEYYY + POSTFINANCE AG + + MINGERSTRASSE 20 + 3030 BERNE + + + + + + + + + + ISR Reference + + + 302388292000022222222222222 + + ?REJECT?0 + + + + 2017-03-22T20:00:00 + + + + CRÉDIT GROUPÉ BVR TRAITEMENT DU 22.03.2017 NUMÉRO CLIENT 01-70884-3 PAQUET ID: 123456CHCAFEBABE +
+
+
+
diff --git a/account_statement_import_camt/test_files/test-camt053.zip b/account_statement_import_camt/test_files/test-camt053.zip new file mode 100644 index 000000000..ccf5b3c2b Binary files /dev/null and b/account_statement_import_camt/test_files/test-camt053.zip differ diff --git a/account_statement_import_camt/test_files/test-camt054 b/account_statement_import_camt/test_files/test-camt054 new file mode 100644 index 000000000..0dd093381 --- /dev/null +++ b/account_statement_import_camt/test_files/test-camt054 @@ -0,0 +1,127 @@ + + + + + 20220126375204763458853 + 2022-01-26T23:40:40 + + 1 + true + + SPS/1.7/PROD + + + 20220120000000000000000 + 2022-01-26T23:40:40 + + 2022-01-26T00:00:00 + 2022-01-26T23:59:59 + + + OTHR + + + + NL77ABNA0574908765 + + + Example company + + + + NL0000000000000000000 + 5.00 + CRDT + false + BOOK + +
2022-01-26
+
+ +
2022-01-26
+
+ 98888208N8 + + + PMNT + + RCDT + VCOM + + + + + + 1 + + + + 15180015077602405 + MIB InstrId305-312MM20211231v1 + ENDTOENDID-01 + + 00 + 20220120000000000000001 + + + 5.00 + CRDT + + + PMNT + + RCDT + ATXN + + + + + + Test Customer + + Test street 1 + 1234 AB Test city + + + + + NL46ABNA0499998748 + + + + + + + + NZNCC020368 + + Test Bank + + Test street 5 + 1234 AB Test city + + + + + + + + + + QRR + + + 000000000000000000000000003 + + + + + 2022-01-26T20:00:00 + + + + Additional entry info +
+
+
+
diff --git a/account_statement_import_camt/tests/__init__.py b/account_statement_import_camt/tests/__init__.py new file mode 100644 index 000000000..bb3456ae9 --- /dev/null +++ b/account_statement_import_camt/tests/__init__.py @@ -0,0 +1 @@ +from . import test_import_bank_statement diff --git a/account_statement_import_camt/tests/test_import_bank_statement.py b/account_statement_import_camt/tests/test_import_bank_statement.py new file mode 100644 index 000000000..2fccda9ef --- /dev/null +++ b/account_statement_import_camt/tests/test_import_bank_statement.py @@ -0,0 +1,168 @@ +# Copyright 2013-2016 Therp BV +# Copyright 2017 Open Net Sàrl +# Copyright 2020 Camptocamp +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +import base64 +import difflib +import pprint +import tempfile +from datetime import date + +from odoo.modules.module import get_module_resource +from odoo.tests.common import TransactionCase + + +class TestParser(TransactionCase): + """Tests for the camt parser itself.""" + + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.parser = cls.env["account.statement.import.camt.parser"] + + def _do_parse_test(self, inputfile, goldenfile): + testfile = get_module_resource( + "account_statement_import_camt", "test_files", inputfile + ) + with open(testfile, "rb") as data: + res = self.parser.parse(data.read()) + with tempfile.NamedTemporaryFile(mode="w+", suffix=".pydata") as temp: + pprint.pprint(res, temp, width=160) + goldenfile_res = get_module_resource( + "account_statement_import_camt", "test_files", goldenfile + ) + with open(goldenfile_res, "r") as golden: + temp.seek(0) + diff = list( + difflib.unified_diff( + golden.readlines(), temp.readlines(), golden.name, temp.name + ) + ) + if len(diff) > 2: + self.fail( + "actual output doesn't match expected " + + "output:\n%s" % "".join(diff) + ) + + def test_parse(self): + self._do_parse_test("test-camt053", "golden-camt053.pydata") + + def test_parse_camt054(self): + self._do_parse_test("test-camt054", "golden-camt054.pydata") + + def test_parse_txdtls(self): + self._do_parse_test("test-camt053-txdtls", "golden-camt053-txdtls.pydata") + + def test_parse_no_ntry(self): + self._do_parse_test("test-camt053-no-ntry", "golden-camt053-no-ntry.pydata") + + +class TestImport(TransactionCase): + """Run test to import camt import.""" + + transactions = [ + { + "account_number": "NL46ABNA0499998748", + "amount": -754.25, + "date": date(year=2014, month=1, day=5), + "ref": "435005714488-ABNO33052620", + }, + { + "remote_account": "NL46ABNA0499998748", + "transferred_amount": -564.05, + "value_date": date(year=2014, month=1, day=5), + "ref": "TESTBANK/NL/20141229/01206408", + }, + { + "remote_account": "NL46ABNA0499998748", + "transferred_amount": -100.0, + "value_date": date(year=2014, month=1, day=5), + "ref": "TESTBANK/NL/20141229/01206407", + }, + { + "remote_account": "NL69ABNA0522123643", + "transferred_amount": 1405.31, + "value_date": date(year=2014, month=1, day=5), + "ref": "115", + }, + ] + + @classmethod + def setUpClass(cls): + super().setUpClass() + eur = cls.env.ref("base.EUR") + eur.write({"active": True}) + bank = cls.env["res.partner.bank"].create( + { + "acc_number": "NL77ABNA0574908765", + "partner_id": cls.env.ref("base.main_partner").id, + "company_id": cls.env.ref("base.main_company").id, + "bank_id": cls.env.ref("base.res_bank_1").id, + } + ) + cls.env["res.partner.bank"].create( + { + "acc_number": "NL46ABNA0499998748", + "partner_id": cls.env.ref("base.main_partner").id, + "company_id": cls.env.ref("base.main_company").id, + "bank_id": cls.env.ref("base.res_bank_1").id, + } + ) + cls.env["account.journal"].create( + { + "name": "Bank Journal - (test camt)", + "code": "TBNKCAMT", + "type": "bank", + "bank_account_id": bank.id, + "currency_id": eur.id, + } + ) + + def test_statement_import(self): + """Test correct creation of single statement.""" + testfile = get_module_resource( + "account_statement_import_camt", "test_files", "test-camt053" + ) + with open(testfile, "rb") as datafile: + camt_file = base64.b64encode(datafile.read()) + + self.env["account.statement.import"].create( + { + "statement_filename": "test import", + "statement_file": camt_file, + } + ).import_file_button() + + bank_st_record = self.env["account.bank.statement"].search( + [("name", "=", "1234Test/1")], limit=1 + ) + statement_lines = bank_st_record.line_ids + self.assertTrue( + any( + all( + line[key] == self.transactions[0][key] + for key in ["amount", "date", "ref"] + ) + # TODO and bank_account_id was removed from line + # and line.bank_account_id.acc_number + # == self.transactions[0]["account_number"] + for line in statement_lines + ) + ) + + def test_zip_import(self): + """Test import of multiple statements from zip file.""" + testfile = get_module_resource( + "account_statement_import_camt", "test_files", "test-camt053.zip" + ) + with open(testfile, "rb") as datafile: + camt_file = base64.b64encode(datafile.read()) + self.env["account.statement.import"].create( + {"statement_filename": "test import", "statement_file": camt_file} + ).import_file_button() + bank_st_record = self.env["account.bank.statement"].search( + [("name", "in", ["1234Test/2", "1234Test/3"])] + ) + + self.assertTrue(all([st.line_ids for st in bank_st_record])) + self.assertEqual(bank_st_record[0].line_ids.mapped("sequence"), [1, 2, 3]) diff --git a/account_statement_import_camt/views/account_bank_statement_import.xml b/account_statement_import_camt/views/account_bank_statement_import.xml new file mode 100644 index 000000000..76f1ee768 --- /dev/null +++ b/account_statement_import_camt/views/account_bank_statement_import.xml @@ -0,0 +1,16 @@ + + + + account.statement.import + + +
    +
  • CAMT
  • +
  • zipped CAMT
  • +
+
+
+
diff --git a/account_statement_import_camt54/README.rst b/account_statement_import_camt54/README.rst new file mode 100644 index 000000000..c386ac3bf --- /dev/null +++ b/account_statement_import_camt54/README.rst @@ -0,0 +1,107 @@ +========================== +Bank Account Camt54 Import +========================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:423ab66deb35c8930b150cf71f0595cf124e40574ae9874935ac5291b19b9c04 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fbank--statement--import-lightgray.png?logo=github + :target: https://github.com/OCA/bank-statement-import/tree/16.0/account_statement_import_camt54 + :alt: OCA/bank-statement-import +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/bank-statement-import-16-0/bank-statement-import-16-0-account_statement_import_camt54 + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/bank-statement-import&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + + This module allows you to import CAMT.054 file (details of customers payments batch) into a dedicated journal taking care of the start/end balance and the remittance reference number. + +Customer invoices will be reconciled/Paid. Payment entries will be posted into an internal transfer account (that you have to create with a type current asset and set on the journal) + +After this first step, import normally your CAMT.053 (full bank statement) into the bank journal. You will be able to clear the internal transfer account to end up the accounting flow. + +Optionally we can activate add generation of additional line in bank statement which will balance your bank statement total to 0. +This line can be consolidated later with different account. +To enable option of final statement line you need properly set flag on Account Journal +Configuration -> Journals -> tab Advanced Settings -> Bank statement configuration + + +Switzerland localisation +------------------------ + +For ISR containing a partner reference, uses the config parameter key `isr_partner_ref`. +Doing so will fill the partners on bank statement lines and speed up the matches in the reconciliation process. + +Value to set in `isr_partner_ref` defines the position of the partner reference inside the ISR. +The format is `i[,n]` +For instance `13,6` to start on position 13 with a 6 digit long reference. +`n` is optional and it's default value is `6`. + +**Table of contents** + +.. contents:: + :local: + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* camptocamp + +Contributors +~~~~~~~~~~~~ + +* Yannick Vaucher +* Timon Tschanz +* `Trobz `_: + + * Son Ho + +Other credits +~~~~~~~~~~~~~ + +* Digital4efficiency.ch +* The migration of this module from 15.0 to 16.0 was financially supported by Camptocamp + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +This module is part of the `OCA/bank-statement-import `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/account_statement_import_camt54/__init__.py b/account_statement_import_camt54/__init__.py new file mode 100644 index 000000000..0650744f6 --- /dev/null +++ b/account_statement_import_camt54/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/account_statement_import_camt54/__manifest__.py b/account_statement_import_camt54/__manifest__.py new file mode 100644 index 000000000..3c5dd1db7 --- /dev/null +++ b/account_statement_import_camt54/__manifest__.py @@ -0,0 +1,13 @@ +# Copyright 2019 Camptocamp SA +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +{ + "name": "Bank Account Camt54 Import", + "version": "16.0.1.0.0", + "category": "Account", + "website": "https://github.com/OCA/bank-statement-import", + "author": "camptocamp, " "Odoo Community Association (OCA)", + "license": "AGPL-3", + "installable": True, + "depends": ["account_statement_import_camt"], + "data": ["views/account_journal_view.xml"], +} diff --git a/account_statement_import_camt54/i18n/account_statement_import_camt54.pot b/account_statement_import_camt54/i18n/account_statement_import_camt54.pot new file mode 100644 index 000000000..ba3243abf --- /dev/null +++ b/account_statement_import_camt54/i18n/account_statement_import_camt54.pot @@ -0,0 +1,62 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_statement_import_camt54 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: account_statement_import_camt54 +#: model:ir.model,name:account_statement_import_camt54.model_account_statement_import_camt_parser +msgid "Account Bank Statement Import CAMT parser" +msgstr "" + +#. module: account_statement_import_camt54 +#: model:ir.model.fields,field_description:account_statement_import_camt54.field_account_journal__transfer_line +msgid "Add balance Line" +msgstr "" + +#. module: account_statement_import_camt54 +#. odoo-python +#: code:addons/account_statement_import_camt54/models/parser.py:0 +#, python-format +msgid "" +"Config parameter `isr_partner_ref` is wrong.\n" +"It must be in format `i[,n]` \n" +"`i` and `n` must be integers.\n" +"e.g. \"13,6\"" +msgstr "" + +#. module: account_statement_import_camt54 +#. odoo-python +#: code:addons/account_statement_import_camt54/models/parser.py:0 +#, python-format +msgid "" +"Config parameter `isr_partner_ref` is wrong.\n" +"It must be in format `i[,n]` \n" +"where `i` is the position of the first digit and\n" +"`n` the number of digit in the reference, by default 6.\n" +"e.g. \"13,6\"" +msgstr "" + +#. module: account_statement_import_camt54 +#: model:ir.model.fields,help:account_statement_import_camt54.field_account_journal__transfer_line +msgid "Generate balance line on total of bank statement import" +msgstr "" + +#. module: account_statement_import_camt54 +#: model:ir.model,name:account_statement_import_camt54.model_account_statement_import +msgid "Import Bank Statement Files" +msgstr "" + +#. module: account_statement_import_camt54 +#: model:ir.model,name:account_statement_import_camt54.model_account_journal +msgid "Journal" +msgstr "" diff --git a/account_statement_import_camt54/i18n/es.po b/account_statement_import_camt54/i18n/es.po new file mode 100644 index 000000000..b4eb53fe6 --- /dev/null +++ b/account_statement_import_camt54/i18n/es.po @@ -0,0 +1,76 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_statement_import_camt54 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-07-29 12:10+0000\n" +"Last-Translator: Ivorra78 \n" +"Language-Team: none\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" +"X-Generator: Weblate 4.17\n" + +#. module: account_statement_import_camt54 +#: model:ir.model,name:account_statement_import_camt54.model_account_statement_import_camt_parser +msgid "Account Bank Statement Import CAMT parser" +msgstr "Análisis de importación de extractos bancarios CAMT" + +#. module: account_statement_import_camt54 +#: model:ir.model.fields,field_description:account_statement_import_camt54.field_account_journal__transfer_line +msgid "Add balance Line" +msgstr "Añadir línea de balance" + +#. module: account_statement_import_camt54 +#. odoo-python +#: code:addons/account_statement_import_camt54/models/parser.py:0 +#, python-format +msgid "" +"Config parameter `isr_partner_ref` is wrong.\n" +"It must be in format `i[,n]` \n" +"`i` and `n` must be integers.\n" +"e.g. \"13,6\"" +msgstr "" +"El parámetro de configuración `isr_partner_ref` es incorrecto.\n" +"Debe tener el formato `i[,n]`. \n" +"`i` y `n` deben ser enteros.\n" +"Por ejemplo, \"13,6\"" + +#. module: account_statement_import_camt54 +#. odoo-python +#: code:addons/account_statement_import_camt54/models/parser.py:0 +#, python-format +msgid "" +"Config parameter `isr_partner_ref` is wrong.\n" +"It must be in format `i[,n]` \n" +"where `i` is the position of the first digit and\n" +"`n` the number of digit in the reference, by default 6.\n" +"e.g. \"13,6\"" +msgstr "" +"El parámetro de configuración `isr_partner_ref` es incorrecto.\n" +"Debe tener el formato `i[,n]`. \n" +"donde `i` es la posición del primer dígito y\n" +"`n` el número de dígitos de la referencia, por defecto 6.\n" +"Por ejemplo, \"13,6\"" + +#. module: account_statement_import_camt54 +#: model:ir.model.fields,help:account_statement_import_camt54.field_account_journal__transfer_line +msgid "Generate balance line on total of bank statement import" +msgstr "" +"Generar línea de saldo sobre el total de la importación de extractos " +"bancarios" + +#. module: account_statement_import_camt54 +#: model:ir.model,name:account_statement_import_camt54.model_account_statement_import +msgid "Import Bank Statement Files" +msgstr "Importar ficheros de extracto bancario" + +#. module: account_statement_import_camt54 +#: model:ir.model,name:account_statement_import_camt54.model_account_journal +msgid "Journal" +msgstr "Dario" diff --git a/account_statement_import_camt54/i18n/it.po b/account_statement_import_camt54/i18n/it.po new file mode 100644 index 000000000..3afb0bdaa --- /dev/null +++ b/account_statement_import_camt54/i18n/it.po @@ -0,0 +1,74 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_statement_import_camt54 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2021-11-25 17:36+0000\n" +"Last-Translator: Sergio Zanchetta \n" +"Language-Team: none\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.3.2\n" + +#. module: account_statement_import_camt54 +#: model:ir.model,name:account_statement_import_camt54.model_account_statement_import_camt_parser +msgid "Account Bank Statement Import CAMT parser" +msgstr "" + +#. module: account_statement_import_camt54 +#: model:ir.model.fields,field_description:account_statement_import_camt54.field_account_journal__transfer_line +msgid "Add balance Line" +msgstr "" + +#. module: account_statement_import_camt54 +#. odoo-python +#: code:addons/account_statement_import_camt54/models/parser.py:0 +#, python-format +msgid "" +"Config parameter `isr_partner_ref` is wrong.\n" +"It must be in format `i[,n]` \n" +"`i` and `n` must be integers.\n" +"e.g. \"13,6\"" +msgstr "" + +#. module: account_statement_import_camt54 +#. odoo-python +#: code:addons/account_statement_import_camt54/models/parser.py:0 +#, python-format +msgid "" +"Config parameter `isr_partner_ref` is wrong.\n" +"It must be in format `i[,n]` \n" +"where `i` is the position of the first digit and\n" +"`n` the number of digit in the reference, by default 6.\n" +"e.g. \"13,6\"" +msgstr "" + +#. module: account_statement_import_camt54 +#: model:ir.model.fields,help:account_statement_import_camt54.field_account_journal__transfer_line +msgid "Generate balance line on total of bank statement import" +msgstr "" + +#. module: account_statement_import_camt54 +#: model:ir.model,name:account_statement_import_camt54.model_account_statement_import +msgid "Import Bank Statement Files" +msgstr "Importazione file estratto conto bancario" + +#. module: account_statement_import_camt54 +#: model:ir.model,name:account_statement_import_camt54.model_account_journal +msgid "Journal" +msgstr "Registro" + +#~ msgid "Display Name" +#~ msgstr "Nome visualizzato" + +#~ msgid "ID" +#~ msgstr "ID" + +#~ msgid "Last Modified on" +#~ msgstr "Ultima modifica il" diff --git a/account_statement_import_camt54/models/__init__.py b/account_statement_import_camt54/models/__init__.py new file mode 100644 index 000000000..7a228b174 --- /dev/null +++ b/account_statement_import_camt54/models/__init__.py @@ -0,0 +1,3 @@ +from . import account_statement_import +from . import account_journal +from . import parser diff --git a/account_statement_import_camt54/models/account_journal.py b/account_statement_import_camt54/models/account_journal.py new file mode 100644 index 000000000..752187a69 --- /dev/null +++ b/account_statement_import_camt54/models/account_journal.py @@ -0,0 +1,14 @@ +# Copyright 2020 Camptocamp SA +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class AccountBankStatementImport(models.Model): + + _inherit = "account.journal" + + transfer_line = fields.Boolean( + string="Add balance Line", + help="Generate balance line on total of bank statement import", + ) diff --git a/account_statement_import_camt54/models/account_statement_import.py b/account_statement_import_camt54/models/account_statement_import.py new file mode 100644 index 000000000..594c656c0 --- /dev/null +++ b/account_statement_import_camt54/models/account_statement_import.py @@ -0,0 +1,51 @@ +# Copyright 2019 Camptocamp SA +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +import logging + +from odoo import models + +_logger = logging.getLogger(__name__) + + +class AccountStatementImport(models.TransientModel): + """Add process_camt method to account.bank.statement.import.""" + + _inherit = "account.statement.import" + + def _create_bank_statements(self, stmts_vals, result): + """Create additional line in statement to set bank statement statement + to 0 balance""" + + super()._create_bank_statements(stmts_vals, result) + statements = self.env["account.bank.statement"].browse(result["statement_ids"]) + for statement in statements: + amount = sum(statement.line_ids.mapped("amount")) + if statement.journal_id.transfer_line: + if amount != 0: + amount = -amount + statement.line_ids.create( + { + "amount": amount, + "statement_id": statement.id, + "date": statement.date, + "payment_ref": statement.name, + } + ) + statement.balance_end_real = statement.balance_start + else: + statement.balance_end_real = statement.balance_start + amount + return + + def _complete_stmts_vals(self, stmts_vals, journal, account_number): + """Search partner from partner reference""" + stmts_vals = super()._complete_stmts_vals(stmts_vals, journal, account_number) + for st_vals in stmts_vals: + for line_vals in st_vals["transactions"]: + if "partner_ref" in line_vals: + partner_ref = line_vals.pop("partner_ref") + partner = self.env["res.partner"].search( + [("ref", "=", partner_ref)], limit=1 + ) + line_vals["partner_id"] = partner.id + + return stmts_vals diff --git a/account_statement_import_camt54/models/parser.py b/account_statement_import_camt54/models/parser.py new file mode 100644 index 000000000..ef74f438d --- /dev/null +++ b/account_statement_import_camt54/models/parser.py @@ -0,0 +1,100 @@ +# Copyright 2019 Camptocamp SA +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import _, exceptions, models + + +class CamtParser(models.AbstractModel): + """Parser for camt bank statement import files.""" + + _inherit = "account.statement.import.camt.parser" + + def _get_partner_ref(self, isr): + ICP = self.env["ir.config_parameter"] + ref_format = ICP.sudo().get_param("isr_partner_ref") + if not ref_format: + return + config = ref_format.split(",") + if len(config) == 2: + start, size = config + elif len(config) == 1: + start = config[0] + size = 6 + else: + raise exceptions.UserError( + _( + "Config parameter `isr_partner_ref` is wrong.\n" + "It must be in format `i[,n]` \n" + "where `i` is the position of the first digit and\n" + "`n` the number of digit in the reference," + " by default 6.\n" + 'e.g. "13,6"' + ) + ) + try: + start = int(start) - 1 # count from 1 instead of 0 + size = int(size) + end = start + size + except ValueError as err: + raise exceptions.UserError( + _( + "Config parameter `isr_partner_ref` is wrong.\n" + "It must be in format `i[,n]` \n" + "`i` and `n` must be integers.\n" + 'e.g. "13,6"' + ) + ) from err + return isr[start:end].lstrip("0") + + def parse_transaction_details(self, ns, node, transaction): + """Put ESR in label and add aditional information to label + if no esr is available + """ + super().parse_transaction_details(ns, node, transaction) + # put the esr in the label. odoo reconciles based on the label, + # if there is no esr it tries to use the information textfield + + isr_number = node.xpath( + "./ns:RmtInf/ns:Strd/ns:CdtrRefInf/ns:Ref", namespaces={"ns": ns} + ) + if len(isr_number): + transaction["payment_ref"] = isr_number[0].text + partner_ref = self._get_partner_ref(isr_number[0].text) + if partner_ref: + transaction["partner_ref"] = partner_ref + else: + xpath_exprs = [ + "./ns:RmtInf/ns:Ustrd|./ns:RtrInf/ns:AddtlInf", + "./ns:AddtlNtryInf", + "/ns:Refs/ns:InstrId", + ] + payment_ref = transaction["payment_ref"] + for xpath_expr in xpath_exprs: + found_node = node.xpath(xpath_expr, namespaces={"ns": ns}) + if found_node: + payment_ref = found_node[0].text + break + trans_id_node = ( + node.getparent() + .getparent() + .xpath("./ns:AcctSvcrRef", namespaces={"ns": ns}) + ) + if trans_id_node: + payment_ref = "{} ({})".format(payment_ref, trans_id_node[0].text) + if payment_ref: + transaction["payment_ref"] = payment_ref + # End add esr to the label. + + # add transaction id to ref + self.add_value_from_node( + ns, + node, + [ + "./../../ns:AcctSvcrRef", + "./ns:RmtInf/ns:Strd/ns:CdtrRefInf/ns:Ref", + "./ns:Refs/ns:EndToEndId", + ], + transaction, + "ref", + ) + return True diff --git a/account_statement_import_camt54/readme/CONTRIBUTORS.rst b/account_statement_import_camt54/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..af39eac6d --- /dev/null +++ b/account_statement_import_camt54/readme/CONTRIBUTORS.rst @@ -0,0 +1,5 @@ +* Yannick Vaucher +* Timon Tschanz +* `Trobz `_: + + * Son Ho diff --git a/account_statement_import_camt54/readme/CREDITS.rst b/account_statement_import_camt54/readme/CREDITS.rst new file mode 100644 index 000000000..c08c9a97b --- /dev/null +++ b/account_statement_import_camt54/readme/CREDITS.rst @@ -0,0 +1,2 @@ +* Digital4efficiency.ch +* The migration of this module from 15.0 to 16.0 was financially supported by Camptocamp diff --git a/account_statement_import_camt54/readme/DESCRIPTION.rst b/account_statement_import_camt54/readme/DESCRIPTION.rst new file mode 100644 index 000000000..4b97b805a --- /dev/null +++ b/account_statement_import_camt54/readme/DESCRIPTION.rst @@ -0,0 +1,22 @@ + This module allows you to import CAMT.054 file (details of customers payments batch) into a dedicated journal taking care of the start/end balance and the remittance reference number. + +Customer invoices will be reconciled/Paid. Payment entries will be posted into an internal transfer account (that you have to create with a type current asset and set on the journal) + +After this first step, import normally your CAMT.053 (full bank statement) into the bank journal. You will be able to clear the internal transfer account to end up the accounting flow. + +Optionally we can activate add generation of additional line in bank statement which will balance your bank statement total to 0. +This line can be consolidated later with different account. +To enable option of final statement line you need properly set flag on Account Journal +Configuration -> Journals -> tab Advanced Settings -> Bank statement configuration + + +Switzerland localisation +------------------------ + +For ISR containing a partner reference, uses the config parameter key `isr_partner_ref`. +Doing so will fill the partners on bank statement lines and speed up the matches in the reconciliation process. + +Value to set in `isr_partner_ref` defines the position of the partner reference inside the ISR. +The format is `i[,n]` +For instance `13,6` to start on position 13 with a 6 digit long reference. +`n` is optional and it's default value is `6`. diff --git a/account_statement_import_camt54/static/description/icon.png b/account_statement_import_camt54/static/description/icon.png new file mode 100644 index 000000000..3a0328b51 Binary files /dev/null and b/account_statement_import_camt54/static/description/icon.png differ diff --git a/account_statement_import_camt54/static/description/index.html b/account_statement_import_camt54/static/description/index.html new file mode 100644 index 000000000..ab922d027 --- /dev/null +++ b/account_statement_import_camt54/static/description/index.html @@ -0,0 +1,455 @@ + + + + + + +Bank Account Camt54 Import + + + +
+

Bank Account Camt54 Import

+ + +

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

+
+This module allows you to import CAMT.054 file (details of customers payments batch) into a dedicated journal taking care of the start/end balance and the remittance reference number.
+

Customer invoices will be reconciled/Paid. Payment entries will be posted into an internal transfer account (that you have to create with a type current asset and set on the journal)

+

After this first step, import normally your CAMT.053 (full bank statement) into the bank journal. You will be able to clear the internal transfer account to end up the accounting flow.

+

Optionally we can activate add generation of additional line in bank statement which will balance your bank statement total to 0. +This line can be consolidated later with different account. +To enable option of final statement line you need properly set flag on Account Journal +Configuration -> Journals -> tab Advanced Settings -> Bank statement configuration

+
+

Switzerland localisation

+

For ISR containing a partner reference, uses the config parameter key isr_partner_ref. +Doing so will fill the partners on bank statement lines and speed up the matches in the reconciliation process.

+

Value to set in isr_partner_ref defines the position of the partner reference inside the ISR. +The format is i[,n] +For instance 13,6 to start on position 13 with a 6 digit long reference. +n is optional and it’s default value is 6.

+

Table of contents

+ +
+

Bug Tracker

+

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

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • camptocamp
  • +
+
+
+

Contributors

+ +
+
+

Other credits

+
    +
  • Digital4efficiency.ch
  • +
  • The migration of this module from 15.0 to 16.0 was financially supported by Camptocamp
  • +
+
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

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

+

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

+

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

+
+
+
+
+ + diff --git a/account_statement_import_camt54/tests/__init__.py b/account_statement_import_camt54/tests/__init__.py new file mode 100644 index 000000000..002dfdbaf --- /dev/null +++ b/account_statement_import_camt54/tests/__init__.py @@ -0,0 +1,2 @@ +from . import test_get_partner_ref +from . import test_statement diff --git a/account_statement_import_camt54/tests/test_get_partner_ref.py b/account_statement_import_camt54/tests/test_get_partner_ref.py new file mode 100644 index 000000000..4e8f4b136 --- /dev/null +++ b/account_statement_import_camt54/tests/test_get_partner_ref.py @@ -0,0 +1,66 @@ +# Copyright 2019 Camptocamp SA +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo.exceptions import UserError +from odoo.tests import common + + +class TestGetPartnerRef(common.TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.Parser = cls.env["account.statement.import.camt.parser"] + cls.ICP = cls.env["ir.config_parameter"] + + def test_no_ICP(self): + """Test no partner ref is read if param is not set""" + ref = "11 11111 11111 11111 11111 11111".replace(" ", "") + partner_ref = self.Parser._get_partner_ref(ref) + self.assertFalse(partner_ref) + + def test_ICP_empty(self): + self.ICP.set_param("isr_partner_ref", "") + ref = "11 11111 11111 11111 11111 11111".replace(" ", "") + partner_ref = self.Parser._get_partner_ref(ref) + self.assertFalse(partner_ref) + + def test_ICP_no_len(self): + """Test a default len of 6 is set if not provided""" + self.ICP.set_param("isr_partner_ref", "12") + ref = "11 11111 11112 34567 11111 11111".replace(" ", "") + partner_ref = self.Parser._get_partner_ref(ref) + self.assertEqual(partner_ref, "234567") + + def test_ICP_full(self): + """Test full format of partner ref definition""" + self.ICP.set_param("isr_partner_ref", "12,6") + ref = "11 11111 11112 34567 11111 11111".replace(" ", "") + partner_ref = self.Parser._get_partner_ref(ref) + self.assertEqual(partner_ref, "234567") + + def test_zero_stripped(self): + """Test full format of partner ref definition""" + self.ICP.set_param("isr_partner_ref", "12,6") + ref = "11 11111 11110 00560 11111 11111".replace(" ", "") + partner_ref = self.Parser._get_partner_ref(ref) + self.assertEqual(partner_ref, "560") + + def test_bad_ICP(self): + """Test ir config parameter validation""" + self.ICP.set_param("isr_partner_ref", "") + ref = "11 11111 11111 11111 11111 11111".replace(" ", "") + + self.ICP.set_param("isr_partner_ref", "A") + with self.assertRaises(UserError): + self.Parser._get_partner_ref(ref) + + self.ICP.set_param("isr_partner_ref", "A,B") + with self.assertRaises(UserError): + self.Parser._get_partner_ref(ref) + + self.ICP.set_param("isr_partner_ref", "1,X") + with self.assertRaises(UserError): + self.Parser._get_partner_ref(ref) + + self.ICP.set_param("isr_partner_ref", "A,8") + with self.assertRaises(UserError): + self.Parser._get_partner_ref(ref) diff --git a/account_statement_import_camt54/tests/test_statement.py b/account_statement_import_camt54/tests/test_statement.py new file mode 100644 index 000000000..93aba5763 --- /dev/null +++ b/account_statement_import_camt54/tests/test_statement.py @@ -0,0 +1,68 @@ +# Copyright 2020 Camptocamp SA +# Copyright 2020 Tecnativa - Pedro M. Baeza +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +import base64 + +from odoo.modules.module import get_module_resource +from odoo.tests.common import TransactionCase + + +class TestGenerateBankStatement(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + eur = cls.env.ref("base.EUR") + eur.write({"active": True}) + bank = cls.env["res.partner.bank"].create( + { + "acc_number": "NL77ABNA0574908765", + "partner_id": cls.env.ref("base.main_partner").id, + "company_id": cls.env.ref("base.main_company").id, + "bank_id": cls.env.ref("base.res_bank_1").id, + } + ) + cls.env["res.partner.bank"].create( + { + "acc_number": "NL46ABNA0499998748", + "partner_id": cls.env.ref("base.main_partner").id, + "company_id": cls.env.ref("base.main_company").id, + "bank_id": cls.env.ref("base.res_bank_1").id, + } + ) + cls.journal = cls.env["account.journal"].create( + { + "name": "Bank Journal - (test camt)", + "code": "TBNKCAMT", + "type": "bank", + "bank_account_id": bank.id, + "currency_id": eur.id, + } + ) + + def _load_statement(self): + testfile = get_module_resource( + "account_statement_import_camt", "test_files", "test-camt054" + ) + with open(testfile, "rb") as datafile: + camt_file = base64.b64encode(datafile.read()) + self.env["account.statement.import"].create( + { + "statement_filename": "test import", + "statement_file": camt_file, + } + ).import_file_button() + bank_st_record = self.env["account.bank.statement"].search( + [("name", "=", "20220120000000000000000")], limit=1 + ) + statement_lines = bank_st_record.line_ids + return statement_lines + + def test_statement_import(self): + self.journal.transfer_line = True + lines = self._load_statement() + self.assertEqual(len(lines), 2) + self.assertAlmostEqual(sum(lines.mapped("amount")), 0) + self.journal.transfer_line = False + lines = self._load_statement() + self.assertEqual(len(lines), 1) + self.assertAlmostEqual(sum(lines.mapped("amount")), 5.0) diff --git a/account_statement_import_camt54/views/account_journal_view.xml b/account_statement_import_camt54/views/account_journal_view.xml new file mode 100644 index 000000000..55486d2c5 --- /dev/null +++ b/account_statement_import_camt54/views/account_journal_view.xml @@ -0,0 +1,18 @@ + + + + + account.journal.form.inherited.bank.statement.import + account.journal + + + + + + + + + diff --git a/account_statement_import_file/README.rst b/account_statement_import_file/README.rst index 68c298425..c832bf667 100644 --- a/account_statement_import_file/README.rst +++ b/account_statement_import_file/README.rst @@ -2,10 +2,13 @@ Import Statement Files ====================== -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:13ac692981cbc798bdb4670fc608f2be35b3f74dd30205bee82ca787ba4e4fb6 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Mature-brightgreen.png :target: https://odoo-community.org/page/development-status @@ -19,11 +22,11 @@ Import Statement Files .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png :target: https://translation.odoo-community.org/projects/bank-statement-import-16-0/bank-statement-import-16-0-account_statement_import_file :alt: Translate me on Weblate -.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/174/16.0 - :alt: Try me on Runbot +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/bank-statement-import&target_branch=16.0 + :alt: Try me on Runboat -|badge1| |badge2| |badge3| |badge4| |badge5| +|badge1| |badge2| |badge3| |badge4| |badge5| This module is the successor of the module **account_bank_statement_import** that was part of Odoo Community until Odoo v13 and was moved to Odoo Enterprise for Odoo v14 (cf `this commit `_). We decided to change its name and the name of the wizard object it provides in order to avoid a conflict with the Enterprise module. @@ -54,7 +57,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. -If you spotted it first, help us smashing it by providing a detailed and welcomed +If you spotted it first, help us to smash it by providing a detailed and welcomed `feedback `_. Do not contact contributors directly about support or help with technical issues. diff --git a/account_statement_import_file/__manifest__.py b/account_statement_import_file/__manifest__.py index 198d4440c..f9004b0f3 100644 --- a/account_statement_import_file/__manifest__.py +++ b/account_statement_import_file/__manifest__.py @@ -6,7 +6,7 @@ { "name": "Import Statement Files", "category": "Accounting", - "version": "16.0.1.0.0", + "version": "16.0.1.0.1", "license": "LGPL-3", "depends": ["account_statement_import_base"], "author": "Odoo SA, Akretion, Odoo Community Association (OCA)", diff --git a/account_statement_import_file/i18n/account_statement_import_file.pot b/account_statement_import_file/i18n/account_statement_import_file.pot index b35b93562..9ec893f72 100644 --- a/account_statement_import_file/i18n/account_statement_import_file.pot +++ b/account_statement_import_file/i18n/account_statement_import_file.pot @@ -65,9 +65,7 @@ msgstr "" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/af.po b/account_statement_import_file/i18n/af.po index 56c6abd0d..c39f3436a 100644 --- a/account_statement_import_file/i18n/af.po +++ b/account_statement_import_file/i18n/af.po @@ -71,9 +71,7 @@ msgstr "Vertoningsnaam" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/am.po b/account_statement_import_file/i18n/am.po index b8fe74644..0b41a89ac 100644 --- a/account_statement_import_file/i18n/am.po +++ b/account_statement_import_file/i18n/am.po @@ -70,9 +70,7 @@ msgstr "" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/ar.po b/account_statement_import_file/i18n/ar.po index 551550563..715facd97 100644 --- a/account_statement_import_file/i18n/ar.po +++ b/account_statement_import_file/i18n/ar.po @@ -86,10 +86,8 @@ msgstr "الاسم المعروض" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." -msgstr "احصل على كشوفات حسابك بصيغة إلكترونية واخترها من هنا." +msgid "Download bank statement files from your bank and upload them here." +msgstr "" #. module: account_statement_import_file #: model:ir.model.fields,field_description:account_statement_import_file.field_account_statement_import__id @@ -273,6 +271,11 @@ msgid "" "imported transactions." msgstr "" +#~ msgid "" +#~ "Get you bank statements in electronic format from your bank and select " +#~ "them here." +#~ msgstr "احصل على كشوفات حسابك بصيغة إلكترونية واخترها من هنا." + #, python-format #~ msgid "Already imported items" #~ msgstr "عناصر تم استيرادها بالفعل" diff --git a/account_statement_import_file/i18n/az.po b/account_statement_import_file/i18n/az.po index 4d6b5be22..8d7b75158 100644 --- a/account_statement_import_file/i18n/az.po +++ b/account_statement_import_file/i18n/az.po @@ -67,9 +67,7 @@ msgstr "" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/bg.po b/account_statement_import_file/i18n/bg.po index fb0a04ac1..553d0f2af 100644 --- a/account_statement_import_file/i18n/bg.po +++ b/account_statement_import_file/i18n/bg.po @@ -70,9 +70,7 @@ msgstr "Име за показване" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/bs.po b/account_statement_import_file/i18n/bs.po index f4a9ec387..5c0e2685b 100644 --- a/account_statement_import_file/i18n/bs.po +++ b/account_statement_import_file/i18n/bs.po @@ -73,9 +73,7 @@ msgstr "Prikazani naziv" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/ca.po b/account_statement_import_file/i18n/ca.po index d773208f2..ce94b9da0 100644 --- a/account_statement_import_file/i18n/ca.po +++ b/account_statement_import_file/i18n/ca.po @@ -74,12 +74,8 @@ msgstr "Mostrar Nom" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" -"Obtingui els seus extractes bancaris en format electrònic del seu banc i " -"seleccioni'ls aquí." #. module: account_statement_import_file #: model:ir.model.fields,field_description:account_statement_import_file.field_account_statement_import__id @@ -265,6 +261,13 @@ msgid "" "imported transactions." msgstr "" +#~ msgid "" +#~ "Get you bank statements in electronic format from your bank and select " +#~ "them here." +#~ msgstr "" +#~ "Obtingui els seus extractes bancaris en format electrònic del seu banc i " +#~ "seleccioni'ls aquí." + #, python-format #~ msgid "Already imported items" #~ msgstr "Elements ja importats" diff --git a/account_statement_import_file/i18n/cs.po b/account_statement_import_file/i18n/cs.po index 2ea13b89d..1ba4f6b66 100644 --- a/account_statement_import_file/i18n/cs.po +++ b/account_statement_import_file/i18n/cs.po @@ -78,9 +78,7 @@ msgstr "Zobrazované jméno" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/da.po b/account_statement_import_file/i18n/da.po index 1db10b76c..6bc74d9e8 100644 --- a/account_statement_import_file/i18n/da.po +++ b/account_statement_import_file/i18n/da.po @@ -78,10 +78,8 @@ msgstr "Vis navn" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." -msgstr "Få dine kontoudtog i elektronisk format fra din bank, og vælg dem her." +msgid "Download bank statement files from your bank and upload them here." +msgstr "" #. module: account_statement_import_file #: model:ir.model.fields,field_description:account_statement_import_file.field_account_statement_import__id @@ -266,6 +264,12 @@ msgid "" "imported transactions." msgstr "" +#~ msgid "" +#~ "Get you bank statements in electronic format from your bank and select " +#~ "them here." +#~ msgstr "" +#~ "Få dine kontoudtog i elektronisk format fra din bank, og vælg dem her." + #, python-format #~ msgid "Already imported items" #~ msgstr "Allerede importerede posteringer" diff --git a/account_statement_import_file/i18n/de.po b/account_statement_import_file/i18n/de.po index 7d2ae08b8..f5736341c 100644 --- a/account_statement_import_file/i18n/de.po +++ b/account_statement_import_file/i18n/de.po @@ -78,12 +78,8 @@ msgstr "Anzeigename" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" -"Beschaffen Sie Ihre Kontoauszüge in Dateiform von Ihrer Bank und wählen " -"diese hier aus." #. module: account_statement_import_file #: model:ir.model.fields,field_description:account_statement_import_file.field_account_statement_import__id @@ -268,6 +264,13 @@ msgid "" "imported transactions." msgstr "" +#~ msgid "" +#~ "Get you bank statements in electronic format from your bank and select " +#~ "them here." +#~ msgstr "" +#~ "Beschaffen Sie Ihre Kontoauszüge in Dateiform von Ihrer Bank und wählen " +#~ "diese hier aus." + #, python-format #~ msgid "Already imported items" #~ msgstr "Bereits importierte Positionen" diff --git a/account_statement_import_file/i18n/el.po b/account_statement_import_file/i18n/el.po index 1eb714fb1..58f871197 100644 --- a/account_statement_import_file/i18n/el.po +++ b/account_statement_import_file/i18n/el.po @@ -75,9 +75,7 @@ msgstr "Εμφάνιση Ονόματος" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/en_AU.po b/account_statement_import_file/i18n/en_AU.po index 7697b89ab..a50d703f5 100644 --- a/account_statement_import_file/i18n/en_AU.po +++ b/account_statement_import_file/i18n/en_AU.po @@ -70,9 +70,7 @@ msgstr "Display Name" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/en_GB.po b/account_statement_import_file/i18n/en_GB.po index bba6270b2..5c55400d2 100644 --- a/account_statement_import_file/i18n/en_GB.po +++ b/account_statement_import_file/i18n/en_GB.po @@ -71,9 +71,7 @@ msgstr "Display Name" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/es.po b/account_statement_import_file/i18n/es.po index 7826bd72f..f239b7f6e 100644 --- a/account_statement_import_file/i18n/es.po +++ b/account_statement_import_file/i18n/es.po @@ -21,15 +21,15 @@ msgstr "" "Project-Id-Version: Odoo Server saas~12.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-01-26 09:11+0000\n" -"PO-Revision-Date: 2023-02-26 17:23+0000\n" -"Last-Translator: Harald Panten \n" +"PO-Revision-Date: 2023-07-29 12:10+0000\n" +"Last-Translator: Ivorra78 \n" "Language-Team: Spanish (https://www.transifex.com/odoo/teams/41243/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" -"X-Generator: Weblate 4.14.1\n" +"X-Generator: Weblate 4.17\n" #. module: account_statement_import_file #. odoo-python @@ -48,7 +48,7 @@ msgstr "1 transacción ha sido ya importada y será ignorada." #. module: account_statement_import_file #: model_terms:ir.ui.view,arch_db:account_statement_import_file.journal_dashboard_view_inherit msgid "Import (OCA)" -msgstr "" +msgstr "Importación (OCA)" #. module: account_statement_import_file #: model_terms:ir.ui.view,arch_db:account_statement_import_file.account_statement_import_form @@ -65,6 +65,10 @@ msgid "" "the related bank journal. If the related bank journal doesn't exist yet, you " "should create a new one." msgstr "" +"No se pudo encontrar ninguna cuenta bancaria con el número " +"'%(account_number)s' vinculada al partner '%(partner_name)s'. Debe crear la " +"cuenta bancaria y establecerla en el diario bancario relacionado. Si el " +"diario bancario relacionado aún no existe, debe crear uno nuevo." #. module: account_statement_import_file #: model:ir.model.fields,field_description:account_statement_import_file.field_account_statement_import__create_uid @@ -83,12 +87,9 @@ msgstr "Nombre mostrado" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" -"Obtenga sus extractos bancarios en formato electrónico de su banco y " -"selecciónelos aquí." +"Descargue los ficheros de extractos bancarios de su banco y cárguelos aquí." #. module: account_statement_import_file #: model:ir.model.fields,field_description:account_statement_import_file.field_account_statement_import__id @@ -104,15 +105,13 @@ msgstr "Importar" #. module: account_statement_import_file #: model:ir.actions.act_window,name:account_statement_import_file.account_statement_import_action -#, fuzzy msgid "Import Bank Statement File" -msgstr "Importar extracto bancario" +msgstr "Importar archivo de extracto bancario" #. module: account_statement_import_file #: model:ir.model,name:account_statement_import_file.model_account_statement_import -#, fuzzy msgid "Import Bank Statement Files" -msgstr "Importar extracto bancario" +msgstr "Importar archivos de extracto bancario" #. module: account_statement_import_file #: model:ir.ui.menu,name:account_statement_import_file.account_statement_import_menu @@ -154,39 +153,36 @@ msgstr "Última actualización el" #: code:addons/account_statement_import_file/wizard/account_statement_import.py:0 #, python-format msgid "Missing currency code in the bank statement file." -msgstr "" +msgstr "Falta el código de moneda en el archivo del extracto bancario." #. module: account_statement_import_file #. odoo-python #: code:addons/account_statement_import_file/wizard/account_statement_import.py:0 -#, fuzzy, python-format +#, python-format msgid "Missing payment_ref on a transaction." -msgstr "Este archivo no contiene ninguna transacción." +msgstr "Falta el payment_ref en una transacción." #. module: account_statement_import_file #: model:ir.model.fields,field_description:account_statement_import_file.field_account_statement_import__statement_file -#, fuzzy msgid "Statement File" -msgstr "Línea de extracto bancario" +msgstr "Archivo de extracto" #. module: account_statement_import_file #: model:ir.model.fields,field_description:account_statement_import_file.field_account_statement_import__statement_filename -#, fuzzy msgid "Statement Filename" -msgstr "Línea de extracto bancario" +msgstr "Nombre del extracto" #. module: account_statement_import_file #: model_terms:ir.ui.view,arch_db:account_statement_import_file.account_statement_import_form msgid "Supported formats:" -msgstr "" +msgstr "Bancos soportados:" #. module: account_statement_import_file #. odoo-python #: code:addons/account_statement_import_file/wizard/account_statement_import.py:0 -#, fuzzy, python-format +#, python-format msgid "The Bank Accounting Account is not set on the journal '%s'." -msgstr "" -"La cuenta bancaria de este extracto no es la misma que la del diario (%s)" +msgstr "La cuenta de la cuenta bancaria no está establecida en el diario '%s'." #. module: account_statement_import_file #. odoo-python @@ -197,6 +193,10 @@ msgid "" "not set on any bank journal. You should set it on the related bank journal. " "If the related bank journal doesn't exist yet, you should create a new one." msgstr "" +"La cuenta bancaria con el número '%(account_number)s' existe en Odoo pero no " +"está establecida en ningún diario bancario. Debes establecerla en el diario " +"bancario relacionado. Si el diario bancario relacionado aún no existe, debe " +"crear uno nuevo." #. module: account_statement_import_file #. odoo-python @@ -206,6 +206,8 @@ msgid "" "The bank statement file uses currency '%s' but there is no such currency in " "Odoo." msgstr "" +"El archivo del extracto bancario usa la moneda '%s' pero no existe tal " +"moneda en Odoo." #. module: account_statement_import_file #. odoo-python @@ -215,6 +217,8 @@ msgid "" "The currency of the bank statement (%(currency_name)s) is not the same as " "the currency of the journal '%(journal_name)s' (%(journal_currency_name)s)." msgstr "" +"La moneda del extracto bancario (%(currency_name)s) no es la misma que la " +"moneda del diario '%(journal_name)s' (%(journal_currency_name)s)." #. module: account_statement_import_file #. odoo-python @@ -225,6 +229,9 @@ msgid "" "number, so you must start the wizard from the right bank journal in the " "dashboard." msgstr "" +"El formato de este archivo de extracto bancario no contiene el número de " +"cuenta bancaria, por lo que debe iniciar el asistente desde el diario " +"bancario correcto en el tablero." #. module: account_statement_import_file #. odoo-python @@ -234,35 +241,36 @@ msgid "" "The journal found for the file (%(journal_match)s) is different from the " "selected journal (%(journal_selected)s)." msgstr "" +"El diario encontrada para el archivo (%(journal_match)s) es diferente al " +"diario seleccionado (%(journal_selected)s)." #. module: account_statement_import_file #. odoo-python #: code:addons/account_statement_import_file/wizard/account_statement_import.py:0 #, python-format msgid "The parsing of the statement file returned an invalid result." -msgstr "" +msgstr "El análisis del archivo devolvió un resultado no válido." #. module: account_statement_import_file #. odoo-python #: code:addons/account_statement_import_file/wizard/account_statement_import.py:0 -#, fuzzy, python-format +#, python-format msgid "" "This bank statement file format is not supported.\n" "Did you install the Odoo module to support this format?" msgstr "" -"No se pudo interpretar el archivo dado. ¿Ha instalado el módulo que soporta " -"este tipo de archivo?" +"Este formato de archivo de extracto bancario no es compatible.\n" +"¿Instaló el módulo Odoo para admitir este formato?" #. module: account_statement_import_file #: model_terms:ir.ui.view,arch_db:account_statement_import_file.account_statement_import_form msgid "Upload Bank Statements" -msgstr "" +msgstr "Cargar extractos bancarios" #. module: account_statement_import_file #: model_terms:ir.ui.view,arch_db:account_statement_import_file.account_statement_import_form -#, fuzzy msgid "Upload a bank statement file" -msgstr "Línea de extracto bancario" +msgstr "Subir un archivo de extracto bancario" #. module: account_statement_import_file #. odoo-python @@ -272,6 +280,15 @@ msgid "" "You have already imported this file, or this file only contains already " "imported transactions." msgstr "" +"Ya ha importado este archivo, o este archivo solo contiene transacciones ya " +"importadas." + +#~ msgid "" +#~ "Get you bank statements in electronic format from your bank and select " +#~ "them here." +#~ msgstr "" +#~ "Obtenga sus extractos bancarios en formato electrónico de su banco y " +#~ "selecciónelos aquí." #, python-format #~ msgid "Already imported items" diff --git a/account_statement_import_file/i18n/es_AR.po b/account_statement_import_file/i18n/es_AR.po index 42d907546..8767dcad2 100644 --- a/account_statement_import_file/i18n/es_AR.po +++ b/account_statement_import_file/i18n/es_AR.po @@ -72,12 +72,8 @@ msgstr "Mostrar Nombre" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" -"Obtenga sus extractos bancarios en formato electrónico desde su banco y " -"seleccionelos aqui." #. module: account_statement_import_file #: model:ir.model.fields,field_description:account_statement_import_file.field_account_statement_import__id @@ -264,6 +260,13 @@ msgstr "" "Ya ha importado este archivo, o este archivo solo contiene transacciones que " "ya fueron importadas." +#~ msgid "" +#~ "Get you bank statements in electronic format from your bank and select " +#~ "them here." +#~ msgstr "" +#~ "Obtenga sus extractos bancarios en formato electrónico desde su banco y " +#~ "seleccionelos aqui." + #, python-format #~ msgid "Already imported items" #~ msgstr "Artículos ya importados" diff --git a/account_statement_import_file/i18n/es_BO.po b/account_statement_import_file/i18n/es_BO.po index 20aa6f8c3..6b8ac7293 100644 --- a/account_statement_import_file/i18n/es_BO.po +++ b/account_statement_import_file/i18n/es_BO.po @@ -71,9 +71,7 @@ msgstr "" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/es_CL.po b/account_statement_import_file/i18n/es_CL.po index 3b71d25cf..fb8111121 100644 --- a/account_statement_import_file/i18n/es_CL.po +++ b/account_statement_import_file/i18n/es_CL.po @@ -71,9 +71,7 @@ msgstr "Nombre mostrado" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/es_CO.po b/account_statement_import_file/i18n/es_CO.po index 09bf33268..6c8e7b54b 100644 --- a/account_statement_import_file/i18n/es_CO.po +++ b/account_statement_import_file/i18n/es_CO.po @@ -71,9 +71,7 @@ msgstr "Nombre Público" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/es_CR.po b/account_statement_import_file/i18n/es_CR.po index 2919380b5..fad549398 100644 --- a/account_statement_import_file/i18n/es_CR.po +++ b/account_statement_import_file/i18n/es_CR.po @@ -71,9 +71,7 @@ msgstr "" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/es_DO.po b/account_statement_import_file/i18n/es_DO.po index 1152eac09..12812ec48 100644 --- a/account_statement_import_file/i18n/es_DO.po +++ b/account_statement_import_file/i18n/es_DO.po @@ -71,9 +71,7 @@ msgstr "Nombre mostrado" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/es_EC.po b/account_statement_import_file/i18n/es_EC.po index 7a22989cb..d4f5ab36c 100644 --- a/account_statement_import_file/i18n/es_EC.po +++ b/account_statement_import_file/i18n/es_EC.po @@ -71,9 +71,7 @@ msgstr "Nombre a Mostrar" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/es_PE.po b/account_statement_import_file/i18n/es_PE.po index effa6546d..b66afd47d 100644 --- a/account_statement_import_file/i18n/es_PE.po +++ b/account_statement_import_file/i18n/es_PE.po @@ -71,9 +71,7 @@ msgstr "Nombre a Mostrar" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/es_PY.po b/account_statement_import_file/i18n/es_PY.po index e396dc936..7de344653 100644 --- a/account_statement_import_file/i18n/es_PY.po +++ b/account_statement_import_file/i18n/es_PY.po @@ -71,9 +71,7 @@ msgstr "" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/es_VE.po b/account_statement_import_file/i18n/es_VE.po index 41acae33c..a6f9942ce 100644 --- a/account_statement_import_file/i18n/es_VE.po +++ b/account_statement_import_file/i18n/es_VE.po @@ -71,9 +71,7 @@ msgstr "Mostrar nombre" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/et.po b/account_statement_import_file/i18n/et.po index 91d2a2aae..b7f840c0d 100644 --- a/account_statement_import_file/i18n/et.po +++ b/account_statement_import_file/i18n/et.po @@ -78,10 +78,8 @@ msgstr "Näidatav nimi" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." -msgstr "Hankige pangaväljavõtted elektroonilises vormis ja valige need siin." +msgid "Download bank statement files from your bank and upload them here." +msgstr "" #. module: account_statement_import_file #: model:ir.model.fields,field_description:account_statement_import_file.field_account_statement_import__id @@ -266,6 +264,12 @@ msgid "" "imported transactions." msgstr "" +#~ msgid "" +#~ "Get you bank statements in electronic format from your bank and select " +#~ "them here." +#~ msgstr "" +#~ "Hankige pangaväljavõtted elektroonilises vormis ja valige need siin." + #, python-format #~ msgid "Already imported items" #~ msgstr "Juba imporditud read" diff --git a/account_statement_import_file/i18n/eu.po b/account_statement_import_file/i18n/eu.po index 59f3e6b3f..c93d4477d 100644 --- a/account_statement_import_file/i18n/eu.po +++ b/account_statement_import_file/i18n/eu.po @@ -70,9 +70,7 @@ msgstr "Izena erakutsi" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/fa.po b/account_statement_import_file/i18n/fa.po index 8c3c2cf08..fa8647c30 100644 --- a/account_statement_import_file/i18n/fa.po +++ b/account_statement_import_file/i18n/fa.po @@ -76,9 +76,7 @@ msgstr "نام نمایشی" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/fi.po b/account_statement_import_file/i18n/fi.po index ba02bb0cb..3d73f6748 100644 --- a/account_statement_import_file/i18n/fi.po +++ b/account_statement_import_file/i18n/fi.po @@ -76,11 +76,8 @@ msgstr "Näyttönimi" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" -"Hae pankin tiliotteet sähköisessä muodossa pankistasi ja valitse ne täällä." #. module: account_statement_import_file #: model:ir.model.fields,field_description:account_statement_import_file.field_account_statement_import__id @@ -265,6 +262,13 @@ msgid "" "imported transactions." msgstr "" +#~ msgid "" +#~ "Get you bank statements in electronic format from your bank and select " +#~ "them here." +#~ msgstr "" +#~ "Hae pankin tiliotteet sähköisessä muodossa pankistasi ja valitse ne " +#~ "täällä." + #, python-format #~ msgid "Already imported items" #~ msgstr "Aiemmin ladatut rivit" diff --git a/account_statement_import_file/i18n/fo.po b/account_statement_import_file/i18n/fo.po index 955fec70f..06e2fe56a 100644 --- a/account_statement_import_file/i18n/fo.po +++ b/account_statement_import_file/i18n/fo.po @@ -70,9 +70,7 @@ msgstr "Vís navn" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/fr.po b/account_statement_import_file/i18n/fr.po index 5a0c24752..7255c6979 100644 --- a/account_statement_import_file/i18n/fr.po +++ b/account_statement_import_file/i18n/fr.po @@ -18,15 +18,15 @@ msgstr "" "Project-Id-Version: Odoo Server saas~12.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-01-26 09:11+0000\n" -"PO-Revision-Date: 2021-03-22 15:46+0000\n" -"Last-Translator: Yves Le Doeuff \n" +"PO-Revision-Date: 2023-06-08 14:08+0000\n" +"Last-Translator: Alexis de Lattre \n" "Language-Team: French (https://www.transifex.com/odoo/teams/41243/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" -"X-Generator: Weblate 4.3.2\n" +"X-Generator: Weblate 4.17\n" #. module: account_statement_import_file #. odoo-python @@ -45,7 +45,7 @@ msgstr "1 transaction a déjà été importée et a été ignorée." #. module: account_statement_import_file #: model_terms:ir.ui.view,arch_db:account_statement_import_file.journal_dashboard_view_inherit msgid "Import (OCA)" -msgstr "" +msgstr "Import (OCA)" #. module: account_statement_import_file #: model_terms:ir.ui.view,arch_db:account_statement_import_file.account_statement_import_form @@ -62,6 +62,10 @@ msgid "" "the related bank journal. If the related bank journal doesn't exist yet, you " "should create a new one." msgstr "" +"Impossible de trouver un compte bancaire avec le numéro '%(account_number)s' " +"lié au partenaire '%(partner_name)s'. Vous devez créer le compte bancaire et " +"le configurer sur le journal de banque associé. Si le journal de banque " +"associé n'existe pas encore, vous devez en créer un nouveau." #. module: account_statement_import_file #: model:ir.model.fields,field_description:account_statement_import_file.field_account_statement_import__create_uid @@ -76,16 +80,12 @@ msgstr "Créé le" #. module: account_statement_import_file #: model:ir.model.fields,field_description:account_statement_import_file.field_account_statement_import__display_name msgid "Display Name" -msgstr "Afficher Nom" +msgstr "Nom affiché" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" -"Obtenez les relevés bancaires en version électronique depuis votre banque et " -"sélectionnez-les ici." #. module: account_statement_import_file #: model:ir.model.fields,field_description:account_statement_import_file.field_account_statement_import__id @@ -101,30 +101,28 @@ msgstr "Importer" #. module: account_statement_import_file #: model:ir.actions.act_window,name:account_statement_import_file.account_statement_import_action -#, fuzzy msgid "Import Bank Statement File" -msgstr "Import d'un relevé bancaire" +msgstr "Import d'un fichier de relevé de compte" #. module: account_statement_import_file #: model:ir.model,name:account_statement_import_file.model_account_statement_import -#, fuzzy msgid "Import Bank Statement Files" -msgstr "Import d'un relevé bancaire" +msgstr "Import de fichiers de relevés de compte" #. module: account_statement_import_file #: model:ir.ui.menu,name:account_statement_import_file.account_statement_import_menu msgid "Import Statement" -msgstr "Importation d'un relevé" +msgstr "Import d'un relevé" #. module: account_statement_import_file #: model_terms:ir.ui.view,arch_db:account_statement_import_file.journal_dashboard_view_inherit msgid "Import Statement (OCA)" -msgstr "" +msgstr "Import de relevé (OCA)" #. module: account_statement_import_file #: model_terms:ir.ui.view,arch_db:account_statement_import_file.account_statement_import_form msgid "Import and View" -msgstr "" +msgstr "Importer et visualiser" #. module: account_statement_import_file #: model:ir.model,name:account_statement_import_file.model_account_journal @@ -151,24 +149,24 @@ msgstr "Dernière mise à jour le" #: code:addons/account_statement_import_file/wizard/account_statement_import.py:0 #, python-format msgid "Missing currency code in the bank statement file." -msgstr "Code de devise manquant dans le fichier de relevé bancaire." +msgstr "Code de devise manquant dans le fichier de relevé de compte." #. module: account_statement_import_file #. odoo-python #: code:addons/account_statement_import_file/wizard/account_statement_import.py:0 #, python-format msgid "Missing payment_ref on a transaction." -msgstr "Référence de paiement manquante sur la transaction." +msgstr "payment_ref manquant sur la transaction." #. module: account_statement_import_file #: model:ir.model.fields,field_description:account_statement_import_file.field_account_statement_import__statement_file msgid "Statement File" -msgstr "Fichier de relevé bancaire" +msgstr "Fichier de relevé de compte" #. module: account_statement_import_file #: model:ir.model.fields,field_description:account_statement_import_file.field_account_statement_import__statement_filename msgid "Statement Filename" -msgstr "Nom du fichier de relevé bancaire" +msgstr "Nom du fichier de relevé de compte" #. module: account_statement_import_file #: model_terms:ir.ui.view,arch_db:account_statement_import_file.account_statement_import_form @@ -178,10 +176,9 @@ msgstr "Formats acceptés :" #. module: account_statement_import_file #. odoo-python #: code:addons/account_statement_import_file/wizard/account_statement_import.py:0 -#, fuzzy, python-format +#, python-format msgid "The Bank Accounting Account is not set on the journal '%s'." -msgstr "" -"Le compte comptable de la banque n'est pas spécifié sur le journal (%s)." +msgstr "Le compte comptable de banque n'est pas défini dans le journal \"%s\"." #. module: account_statement_import_file #. odoo-python @@ -192,6 +189,10 @@ msgid "" "not set on any bank journal. You should set it on the related bank journal. " "If the related bank journal doesn't exist yet, you should create a new one." msgstr "" +"Le compte bancaire ayant le numéro '%(account_number)s' existe dans Odoo " +"mais il n'est configuré sur aucun journal de banque. Vous devez le définir " +"sur le journal de banque associé. Si le journal de banque associé n'existe " +"pas encore, vous devez en créer un nouveau." #. module: account_statement_import_file #. odoo-python @@ -201,8 +202,8 @@ msgid "" "The bank statement file uses currency '%s' but there is no such currency in " "Odoo." msgstr "" -"Le fichier de relevé bancaire utilise la devise '%s' mais il n'y a pas de " -"telle devise dans Odoo." +"Le fichier de relevé de compte utilise la devise '%s' mais cette devise " +"n'existe pas dans Odoo." #. module: account_statement_import_file #. odoo-python @@ -212,6 +213,8 @@ msgid "" "The currency of the bank statement (%(currency_name)s) is not the same as " "the currency of the journal '%(journal_name)s' (%(journal_currency_name)s)." msgstr "" +"La devise du relevé de compte (%(currency_name)s) n'est pas la même que " +"celle du journal '%(journal_name)s' (%(journal_currency_name)s)." #. module: account_statement_import_file #. odoo-python @@ -222,9 +225,9 @@ msgid "" "number, so you must start the wizard from the right bank journal in the " "dashboard." msgstr "" -"Le format de ce fichier de relevé bancaire ne contient pas le numéro de " -"compte bancaire, vous devez donc démarrer l'assistant à partir du journal de " -"la banque de droite dans le tableau de bord." +"Le format de ce fichier de relevé de compte ne contient pas le numéro de " +"compte bancaire, donc vous devez démarrer l'assistant à partir du journal de " +"banque concerné dans le tableau de bord." #. module: account_statement_import_file #. odoo-python @@ -234,13 +237,16 @@ msgid "" "The journal found for the file (%(journal_match)s) is different from the " "selected journal (%(journal_selected)s)." msgstr "" +"Le journal trouvé pour le fichier (%(journal_match)s) est différent du " +"journal sélectionné (%(journal_selected)s)." #. module: account_statement_import_file #. odoo-python #: code:addons/account_statement_import_file/wizard/account_statement_import.py:0 #, python-format msgid "The parsing of the statement file returned an invalid result." -msgstr "L'analyse du fichier de relevé a renvoyé un résultat non valide." +msgstr "" +"L'analyse du fichier de relevé de compte a renvoyé un résultat invalide." #. module: account_statement_import_file #. odoo-python @@ -250,18 +256,18 @@ msgid "" "This bank statement file format is not supported.\n" "Did you install the Odoo module to support this format?" msgstr "" -"Ce format de fichier de relevé n'est pas reconnu.\n" -"Avez-vous installé le module qui supporte ce type de fichier ?" +"Ce format de fichier de relevé de compte n'est pas reconnu.\n" +"Avez-vous installé le module Odoo qui supporte ce type de fichier ?" #. module: account_statement_import_file #: model_terms:ir.ui.view,arch_db:account_statement_import_file.account_statement_import_form msgid "Upload Bank Statements" -msgstr "Télécharger les relevés bancaires" +msgstr "Téléverser les relevés de compte" #. module: account_statement_import_file #: model_terms:ir.ui.view,arch_db:account_statement_import_file.account_statement_import_form msgid "Upload a bank statement file" -msgstr "Télécharger un fichier de relevé bancaire" +msgstr "Téléverser un fichier de relevé de compte" #. module: account_statement_import_file #. odoo-python @@ -274,6 +280,13 @@ msgstr "" "Vous avez déjà importé ce fichier ou ce fichier ne contient que des " "transactions déjà importées." +#~ msgid "" +#~ "Get you bank statements in electronic format from your bank and select " +#~ "them here." +#~ msgstr "" +#~ "Récupérez les relevés de compte en version électronique auprès de votre " +#~ "banque et déposez-les ici." + #, python-format #~ msgid "Already imported items" #~ msgstr "Eléments déjà importés" diff --git a/account_statement_import_file/i18n/fr_BE.po b/account_statement_import_file/i18n/fr_BE.po index ff795f58f..4b2682185 100644 --- a/account_statement_import_file/i18n/fr_BE.po +++ b/account_statement_import_file/i18n/fr_BE.po @@ -72,12 +72,8 @@ msgstr "Afficher le nom" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" -"Obtenez vos relevés bancaires au format électronique auprès de votre banque " -"et sélectionnez-les ici." #. module: account_statement_import_file #: model:ir.model.fields,field_description:account_statement_import_file.field_account_statement_import__id @@ -264,6 +260,13 @@ msgstr "" "Vous avez déjà importé ce fichier ou ce fichier ne contient que des " "transactions déjà importées." +#~ msgid "" +#~ "Get you bank statements in electronic format from your bank and select " +#~ "them here." +#~ msgstr "" +#~ "Obtenez vos relevés bancaires au format électronique auprès de votre " +#~ "banque et sélectionnez-les ici." + #, python-format #~ msgid "Already imported items" #~ msgstr "Articles déjà importés" diff --git a/account_statement_import_file/i18n/fr_CA.po b/account_statement_import_file/i18n/fr_CA.po index 9974bc3e8..c3801c5fc 100644 --- a/account_statement_import_file/i18n/fr_CA.po +++ b/account_statement_import_file/i18n/fr_CA.po @@ -71,9 +71,7 @@ msgstr "Nom affiché" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/fr_FR.po b/account_statement_import_file/i18n/fr_FR.po index b399d2755..e863ff616 100644 --- a/account_statement_import_file/i18n/fr_FR.po +++ b/account_statement_import_file/i18n/fr_FR.po @@ -69,12 +69,8 @@ msgstr "Afficher Nom" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" -"Obtenez les relevés bancaires en version électronique depuis votre banque et " -"sélectionnez-les ici." #. module: account_statement_import_file #: model:ir.model.fields,field_description:account_statement_import_file.field_account_statement_import__id @@ -261,6 +257,13 @@ msgstr "" "Vous avez déjà importé ce fichier ou ce fichier ne contient que des " "transactions déjà importées." +#~ msgid "" +#~ "Get you bank statements in electronic format from your bank and select " +#~ "them here." +#~ msgstr "" +#~ "Obtenez les relevés bancaires en version électronique depuis votre banque " +#~ "et sélectionnez-les ici." + #, python-format #~ msgid "Already imported items" #~ msgstr "Eléments déjà importés" diff --git a/account_statement_import_file/i18n/gl.po b/account_statement_import_file/i18n/gl.po index b19a763b1..37af8ec89 100644 --- a/account_statement_import_file/i18n/gl.po +++ b/account_statement_import_file/i18n/gl.po @@ -70,9 +70,7 @@ msgstr "" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/gu.po b/account_statement_import_file/i18n/gu.po index fbd7c4383..2c0dc435d 100644 --- a/account_statement_import_file/i18n/gu.po +++ b/account_statement_import_file/i18n/gu.po @@ -75,9 +75,7 @@ msgstr "પ્રદર્શન નામ" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/he.po b/account_statement_import_file/i18n/he.po index b949e2c7e..bb20cec18 100644 --- a/account_statement_import_file/i18n/he.po +++ b/account_statement_import_file/i18n/he.po @@ -80,10 +80,8 @@ msgstr "הצג שם" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." -msgstr "קבלו את דפי החשבון שלכם בתבנית ממוחשבת מהבנק, ובחרו אותם כאן." +msgid "Download bank statement files from your bank and upload them here." +msgstr "" #. module: account_statement_import_file #: model:ir.model.fields,field_description:account_statement_import_file.field_account_statement_import__id @@ -267,6 +265,11 @@ msgid "" "imported transactions." msgstr "" +#~ msgid "" +#~ "Get you bank statements in electronic format from your bank and select " +#~ "them here." +#~ msgstr "קבלו את דפי החשבון שלכם בתבנית ממוחשבת מהבנק, ובחרו אותם כאן." + #, python-format #~ msgid "Already imported items" #~ msgstr "פריטים שכבר מיובאים" diff --git a/account_statement_import_file/i18n/hr.po b/account_statement_import_file/i18n/hr.po index c2aafc7b1..5b8ded580 100644 --- a/account_statement_import_file/i18n/hr.po +++ b/account_statement_import_file/i18n/hr.po @@ -89,11 +89,8 @@ msgstr "Naziv" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" -"Preuzmite bankovne izvadke u elektronskom formatu i odaberite ih ovdje." #. module: account_statement_import_file #: model:ir.model.fields,field_description:account_statement_import_file.field_account_statement_import__id @@ -285,6 +282,12 @@ msgid "" msgstr "" "Već ste uvezli ovu datoteku, ili ova datoteka sadrži već uvezene transakcije." +#~ msgid "" +#~ "Get you bank statements in electronic format from your bank and select " +#~ "them here." +#~ msgstr "" +#~ "Preuzmite bankovne izvadke u elektronskom formatu i odaberite ih ovdje." + #, python-format #~ msgid "Already imported items" #~ msgstr "Već uvežene stavke" diff --git a/account_statement_import_file/i18n/hu.po b/account_statement_import_file/i18n/hu.po index af4a6682f..92f163728 100644 --- a/account_statement_import_file/i18n/hu.po +++ b/account_statement_import_file/i18n/hu.po @@ -76,12 +76,8 @@ msgstr "Megjelenített név" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" -"Bankjától szerezze be a kivonatokat elektronikus formátumban és azokat " -"válassza ki itt." #. module: account_statement_import_file #: model:ir.model.fields,field_description:account_statement_import_file.field_account_statement_import__id @@ -265,6 +261,13 @@ msgid "" "imported transactions." msgstr "" +#~ msgid "" +#~ "Get you bank statements in electronic format from your bank and select " +#~ "them here." +#~ msgstr "" +#~ "Bankjától szerezze be a kivonatokat elektronikus formátumban és azokat " +#~ "válassza ki itt." + #, python-format #~ msgid "Already imported items" #~ msgstr "Már importált tételek" diff --git a/account_statement_import_file/i18n/id.po b/account_statement_import_file/i18n/id.po index ff11b83c6..954ed08e4 100644 --- a/account_statement_import_file/i18n/id.po +++ b/account_statement_import_file/i18n/id.po @@ -81,9 +81,7 @@ msgstr "Nama Tampilan" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/is.po b/account_statement_import_file/i18n/is.po index cd52c04c0..476dd1157 100644 --- a/account_statement_import_file/i18n/is.po +++ b/account_statement_import_file/i18n/is.po @@ -73,9 +73,7 @@ msgstr "Nafn" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/it.po b/account_statement_import_file/i18n/it.po index be58997e5..10c8738cf 100644 --- a/account_statement_import_file/i18n/it.po +++ b/account_statement_import_file/i18n/it.po @@ -87,11 +87,8 @@ msgstr "Nome visualizzato" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" -"Selezionare gli estratti conto in formato elettronico ottenuti dalla banca." #. module: account_statement_import_file #: model:ir.model.fields,field_description:account_statement_import_file.field_account_statement_import__id @@ -277,6 +274,13 @@ msgid "" msgstr "" "Il file è già stato importato oppure contiene solo operazioni già importate." +#~ msgid "" +#~ "Get you bank statements in electronic format from your bank and select " +#~ "them here." +#~ msgstr "" +#~ "Selezionare gli estratti conto in formato elettronico ottenuti dalla " +#~ "banca." + #, fuzzy, python-format #~ msgid "Already imported items" #~ msgstr "Voci già importate" diff --git a/account_statement_import_file/i18n/ja.po b/account_statement_import_file/i18n/ja.po index e73842f5b..b2d623631 100644 --- a/account_statement_import_file/i18n/ja.po +++ b/account_statement_import_file/i18n/ja.po @@ -76,9 +76,7 @@ msgstr "表示名" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/ka.po b/account_statement_import_file/i18n/ka.po index 366bd6803..842b6df79 100644 --- a/account_statement_import_file/i18n/ka.po +++ b/account_statement_import_file/i18n/ka.po @@ -70,9 +70,7 @@ msgstr "სახელი" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/kab.po b/account_statement_import_file/i18n/kab.po index ee2186207..77d6cbca2 100644 --- a/account_statement_import_file/i18n/kab.po +++ b/account_statement_import_file/i18n/kab.po @@ -70,9 +70,7 @@ msgstr "" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/km.po b/account_statement_import_file/i18n/km.po index 6be5b3f21..86c071b7c 100644 --- a/account_statement_import_file/i18n/km.po +++ b/account_statement_import_file/i18n/km.po @@ -72,9 +72,7 @@ msgstr "ឈ្មោះសំរាប់បង្ហាញ" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/ko.po b/account_statement_import_file/i18n/ko.po index e8eb7492f..e70734812 100644 --- a/account_statement_import_file/i18n/ko.po +++ b/account_statement_import_file/i18n/ko.po @@ -76,10 +76,8 @@ msgstr "이름 표시" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." -msgstr "은행에서 예금거래 명세서를 전자 형식으로 가져오고 여기서 선택합니다." +msgid "Download bank statement files from your bank and upload them here." +msgstr "" #. module: account_statement_import_file #: model:ir.model.fields,field_description:account_statement_import_file.field_account_statement_import__id @@ -264,6 +262,12 @@ msgid "" "imported transactions." msgstr "" +#~ msgid "" +#~ "Get you bank statements in electronic format from your bank and select " +#~ "them here." +#~ msgstr "" +#~ "은행에서 예금거래 명세서를 전자 형식으로 가져오고 여기서 선택합니다." + #, python-format #~ msgid "Already imported items" #~ msgstr "이미 가져온 항목" diff --git a/account_statement_import_file/i18n/lb.po b/account_statement_import_file/i18n/lb.po index f0d773378..6617d55cc 100644 --- a/account_statement_import_file/i18n/lb.po +++ b/account_statement_import_file/i18n/lb.po @@ -68,9 +68,7 @@ msgstr "" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/lo.po b/account_statement_import_file/i18n/lo.po index 2b1823237..4bd944661 100644 --- a/account_statement_import_file/i18n/lo.po +++ b/account_statement_import_file/i18n/lo.po @@ -70,9 +70,7 @@ msgstr "" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/lt.po b/account_statement_import_file/i18n/lt.po index 4b07c52de..b10970611 100644 --- a/account_statement_import_file/i18n/lt.po +++ b/account_statement_import_file/i18n/lt.po @@ -81,12 +81,8 @@ msgstr "Rodomas pavadinimas" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" -"Gaukite banko išrašus iš savo banko elektroniniu formatu ir pasirinkite juos " -"čia." #. module: account_statement_import_file #: model:ir.model.fields,field_description:account_statement_import_file.field_account_statement_import__id @@ -270,6 +266,13 @@ msgid "" "imported transactions." msgstr "" +#~ msgid "" +#~ "Get you bank statements in electronic format from your bank and select " +#~ "them here." +#~ msgstr "" +#~ "Gaukite banko išrašus iš savo banko elektroniniu formatu ir pasirinkite " +#~ "juos čia." + #, python-format #~ msgid "Already imported items" #~ msgstr "Jau importuoti įrašai" diff --git a/account_statement_import_file/i18n/lv.po b/account_statement_import_file/i18n/lv.po index a41aeff47..9660329f0 100644 --- a/account_statement_import_file/i18n/lv.po +++ b/account_statement_import_file/i18n/lv.po @@ -71,9 +71,7 @@ msgstr "" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/mk.po b/account_statement_import_file/i18n/mk.po index 49bd741a4..75a7cdfa0 100644 --- a/account_statement_import_file/i18n/mk.po +++ b/account_statement_import_file/i18n/mk.po @@ -70,9 +70,7 @@ msgstr "Прикажи име" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/mn.po b/account_statement_import_file/i18n/mn.po index c48777c2c..6bd582f01 100644 --- a/account_statement_import_file/i18n/mn.po +++ b/account_statement_import_file/i18n/mn.po @@ -75,10 +75,8 @@ msgstr "Дэлгэрэнгүй нэр" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." -msgstr "Банкны хуулгын электрон форматыг банкнаасаа авч энд сонгоно уу." +msgid "Download bank statement files from your bank and upload them here." +msgstr "" #. module: account_statement_import_file #: model:ir.model.fields,field_description:account_statement_import_file.field_account_statement_import__id @@ -262,6 +260,11 @@ msgid "" "imported transactions." msgstr "" +#~ msgid "" +#~ "Get you bank statements in electronic format from your bank and select " +#~ "them here." +#~ msgstr "Банкны хуулгын электрон форматыг банкнаасаа авч энд сонгоно уу." + #, python-format #~ msgid "Already imported items" #~ msgstr "Аль хэдийнээ импорт хийгдсэн мөрүүд" diff --git a/account_statement_import_file/i18n/nb.po b/account_statement_import_file/i18n/nb.po index 874fe9cc8..41094fecf 100644 --- a/account_statement_import_file/i18n/nb.po +++ b/account_statement_import_file/i18n/nb.po @@ -74,9 +74,7 @@ msgstr "Visningsnavn" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/ne.po b/account_statement_import_file/i18n/ne.po index 4774d63d1..a25cdbda7 100644 --- a/account_statement_import_file/i18n/ne.po +++ b/account_statement_import_file/i18n/ne.po @@ -67,9 +67,7 @@ msgstr "" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/nl.po b/account_statement_import_file/i18n/nl.po index 27b95224c..7c10168ea 100644 --- a/account_statement_import_file/i18n/nl.po +++ b/account_statement_import_file/i18n/nl.po @@ -78,12 +78,8 @@ msgstr "Schermnaam" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" -"Verkrijg je bankafschriften in elktronische vorm van je bank en selecteer " -"deze hier." #. module: account_statement_import_file #: model:ir.model.fields,field_description:account_statement_import_file.field_account_statement_import__id @@ -272,6 +268,13 @@ msgstr "" "U heeft dit bestand al geimporteerd, of het bestand bevat enkel reeds " "geimporteerde transacties." +#~ msgid "" +#~ "Get you bank statements in electronic format from your bank and select " +#~ "them here." +#~ msgstr "" +#~ "Verkrijg je bankafschriften in elktronische vorm van je bank en selecteer " +#~ "deze hier." + #, python-format #~ msgid "Already imported items" #~ msgstr "Al geïmporteerde items" diff --git a/account_statement_import_file/i18n/nl_BE.po b/account_statement_import_file/i18n/nl_BE.po index d33eec907..d0a6d3993 100644 --- a/account_statement_import_file/i18n/nl_BE.po +++ b/account_statement_import_file/i18n/nl_BE.po @@ -71,9 +71,7 @@ msgstr "Schermnaam" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/pl.po b/account_statement_import_file/i18n/pl.po index e9dad0cac..ea1f135ca 100644 --- a/account_statement_import_file/i18n/pl.po +++ b/account_statement_import_file/i18n/pl.po @@ -87,12 +87,8 @@ msgstr "Nazwa wyświetlana" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" -"Pobierz swój wyciąg bankowy w formacie elektronicznym ze swojego banku i " -"wybierz go z tego miejsca." #. module: account_statement_import_file #: model:ir.model.fields,field_description:account_statement_import_file.field_account_statement_import__id @@ -276,6 +272,13 @@ msgid "" "imported transactions." msgstr "" +#~ msgid "" +#~ "Get you bank statements in electronic format from your bank and select " +#~ "them here." +#~ msgstr "" +#~ "Pobierz swój wyciąg bankowy w formacie elektronicznym ze swojego banku i " +#~ "wybierz go z tego miejsca." + #, python-format #~ msgid "Already imported items" #~ msgstr "Importowane dokumenty" diff --git a/account_statement_import_file/i18n/pt.po b/account_statement_import_file/i18n/pt.po index 7a8e88850..da0faf775 100644 --- a/account_statement_import_file/i18n/pt.po +++ b/account_statement_import_file/i18n/pt.po @@ -69,11 +69,8 @@ msgstr "Nome a Exibir" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" -"Obtenha os seus extratos bancários em formato eletrónico e selecione-os aqui." #. module: account_statement_import_file #: model:ir.model.fields,field_description:account_statement_import_file.field_account_statement_import__id @@ -257,6 +254,13 @@ msgid "" msgstr "" "Ou já importou este arquivo ou este contém apenas transações já importadas." +#~ msgid "" +#~ "Get you bank statements in electronic format from your bank and select " +#~ "them here." +#~ msgstr "" +#~ "Obtenha os seus extratos bancários em formato eletrónico e selecione-os " +#~ "aqui." + #, python-format #~ msgid "Already imported items" #~ msgstr "Itens já importados" diff --git a/account_statement_import_file/i18n/pt_BR.po b/account_statement_import_file/i18n/pt_BR.po index c786a8eef..7dd4a3971 100644 --- a/account_statement_import_file/i18n/pt_BR.po +++ b/account_statement_import_file/i18n/pt_BR.po @@ -25,15 +25,16 @@ msgstr "" "Project-Id-Version: Odoo Server saas~12.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-01-26 09:11+0000\n" -"PO-Revision-Date: 2019-08-26 09:08+0000\n" -"Last-Translator: Luiz Carareto Alonso , 2019\n" +"PO-Revision-Date: 2023-06-12 16:10+0000\n" +"Last-Translator: Adriano Prado \n" "Language-Team: Portuguese (Brazil) (https://www.transifex.com/odoo/" "teams/41243/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" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.17\n" #. module: account_statement_import_file #. odoo-python @@ -52,7 +53,7 @@ msgstr "1 transação já havia sido importada e foi ignorada." #. module: account_statement_import_file #: model_terms:ir.ui.view,arch_db:account_statement_import_file.journal_dashboard_view_inherit msgid "Import (OCA)" -msgstr "" +msgstr "Importar (OCA)" #. module: account_statement_import_file #: model_terms:ir.ui.view,arch_db:account_statement_import_file.account_statement_import_form @@ -69,6 +70,10 @@ msgid "" "the related bank journal. If the related bank journal doesn't exist yet, you " "should create a new one." msgstr "" +"Não foi possível encontrar nenhuma conta bancária com o número " +"'%(account_number)s' vinculada ao parceiro '%(partner_name)s'. Você deve " +"criar a conta bancária e defini-la no diário do banco relacionado. Se o " +"diário do banco relacionado ainda não existir, você deverá criar um novo." #. module: account_statement_import_file #: model:ir.model.fields,field_description:account_statement_import_file.field_account_statement_import__create_uid @@ -87,12 +92,10 @@ msgstr "Nome exibido" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" -"Obtenha seus extratos bancários em formato eletrônico do seu banco e " -"selecione-os aqui." +"Baixe os arquivos de extrato bancário do seu banco e faça o upload deles " +"aqui." #. module: account_statement_import_file #: model:ir.model.fields,field_description:account_statement_import_file.field_account_statement_import__id @@ -108,13 +111,11 @@ msgstr "Importar" #. module: account_statement_import_file #: model:ir.actions.act_window,name:account_statement_import_file.account_statement_import_action -#, fuzzy msgid "Import Bank Statement File" msgstr "Importar Extrato Bancário" #. module: account_statement_import_file #: model:ir.model,name:account_statement_import_file.model_account_statement_import -#, fuzzy msgid "Import Bank Statement Files" msgstr "Importar Extrato Bancário" @@ -126,12 +127,12 @@ msgstr "Importar Extrato" #. module: account_statement_import_file #: model_terms:ir.ui.view,arch_db:account_statement_import_file.journal_dashboard_view_inherit msgid "Import Statement (OCA)" -msgstr "" +msgstr "Importar Extrato (OCA)" #. module: account_statement_import_file #: model_terms:ir.ui.view,arch_db:account_statement_import_file.account_statement_import_form msgid "Import and View" -msgstr "" +msgstr "Importar e Visualizar" #. module: account_statement_import_file #: model:ir.model,name:account_statement_import_file.model_account_journal @@ -158,38 +159,36 @@ msgstr "Última atualização em" #: code:addons/account_statement_import_file/wizard/account_statement_import.py:0 #, python-format msgid "Missing currency code in the bank statement file." -msgstr "" +msgstr "Falta o código da moeda no arquivo do extrato bancário." #. module: account_statement_import_file #. odoo-python #: code:addons/account_statement_import_file/wizard/account_statement_import.py:0 -#, fuzzy, python-format +#, python-format msgid "Missing payment_ref on a transaction." -msgstr "Este arquivo não contém qualquer transação." +msgstr "Payment_ref ausente em uma transação." #. module: account_statement_import_file #: model:ir.model.fields,field_description:account_statement_import_file.field_account_statement_import__statement_file -#, fuzzy msgid "Statement File" -msgstr "Linha de Extrato Bancário" +msgstr "Arquivo de Extrato Bancário" #. module: account_statement_import_file #: model:ir.model.fields,field_description:account_statement_import_file.field_account_statement_import__statement_filename -#, fuzzy msgid "Statement Filename" -msgstr "Linha de Extrato Bancário" +msgstr "Arquivo de Extrato Bancário" #. module: account_statement_import_file #: model_terms:ir.ui.view,arch_db:account_statement_import_file.account_statement_import_form msgid "Supported formats:" -msgstr "" +msgstr "Formatos suportados:" #. module: account_statement_import_file #. odoo-python #: code:addons/account_statement_import_file/wizard/account_statement_import.py:0 -#, fuzzy, python-format +#, python-format msgid "The Bank Accounting Account is not set on the journal '%s'." -msgstr "A conta deste extrato não é a mesma que o diário (%s)." +msgstr "A Conta Bancária não está definida no diário '%s'." #. module: account_statement_import_file #. odoo-python @@ -200,6 +199,10 @@ msgid "" "not set on any bank journal. You should set it on the related bank journal. " "If the related bank journal doesn't exist yet, you should create a new one." msgstr "" +"A conta bancária com o número '%(account_number)s' existe no Odoo, mas não " +"está definida em nenhum diário do banco. Você deve defini-la no diário do " +"banco relacionado. Se o diário do banco relacionado ainda não existir, você " +"deverá criar um novo." #. module: account_statement_import_file #. odoo-python @@ -209,6 +212,8 @@ msgid "" "The bank statement file uses currency '%s' but there is no such currency in " "Odoo." msgstr "" +"O arquivo de extrato bancário usa a moeda '%s', mas não existe essa moeda no " +"Odoo." #. module: account_statement_import_file #. odoo-python @@ -218,6 +223,8 @@ msgid "" "The currency of the bank statement (%(currency_name)s) is not the same as " "the currency of the journal '%(journal_name)s' (%(journal_currency_name)s)." msgstr "" +"A moeda do extrato bancário (%(currency_name)s) não é a mesma moeda do " +"diário '%(journal_name)s' (%(journal_currency_name)s)." #. module: account_statement_import_file #. odoo-python @@ -228,6 +235,9 @@ msgid "" "number, so you must start the wizard from the right bank journal in the " "dashboard." msgstr "" +"O formato desse arquivo de extrato bancário não contém o número da conta " +"bancária, portanto, você deve iniciar o assistente para o diário do banco no " +"painel." #. module: account_statement_import_file #. odoo-python @@ -237,35 +247,36 @@ msgid "" "The journal found for the file (%(journal_match)s) is different from the " "selected journal (%(journal_selected)s)." msgstr "" +"O diário encontrado para o arquivo (%(journal_match)s) é diferente do diário " +"selecionada (%(journal_selected)s)." #. module: account_statement_import_file #. odoo-python #: code:addons/account_statement_import_file/wizard/account_statement_import.py:0 #, python-format msgid "The parsing of the statement file returned an invalid result." -msgstr "" +msgstr "A análise do arquivo de extrato retornou um resultado inválido." #. module: account_statement_import_file #. odoo-python #: code:addons/account_statement_import_file/wizard/account_statement_import.py:0 -#, fuzzy, python-format +#, python-format msgid "" "This bank statement file format is not supported.\n" "Did you install the Odoo module to support this format?" msgstr "" -"Não foi possível entender arquivo enviado.\n" -"Você instalou o módulo de apoio a este tipo de arquivo?" +"Este formato de arquivo de extrato bancário não é suportado.\n" +"Você instalou o módulo Odoo para suportar este formato?" #. module: account_statement_import_file #: model_terms:ir.ui.view,arch_db:account_statement_import_file.account_statement_import_form msgid "Upload Bank Statements" -msgstr "" +msgstr "Carregar extratos bancários" #. module: account_statement_import_file #: model_terms:ir.ui.view,arch_db:account_statement_import_file.account_statement_import_form -#, fuzzy msgid "Upload a bank statement file" -msgstr "Linha de Extrato Bancário" +msgstr "Carregar arquivo extratos bancários" #. module: account_statement_import_file #. odoo-python @@ -275,6 +286,15 @@ msgid "" "You have already imported this file, or this file only contains already " "imported transactions." msgstr "" +"Você já importou este arquivo ou este arquivo contém apenas transações já " +"importadas." + +#~ msgid "" +#~ "Get you bank statements in electronic format from your bank and select " +#~ "them here." +#~ msgstr "" +#~ "Obtenha seus extratos bancários em formato eletrônico do seu banco e " +#~ "selecione-os aqui." #, python-format #~ msgid "Already imported items" diff --git a/account_statement_import_file/i18n/ro.po b/account_statement_import_file/i18n/ro.po index a7a3f3b94..b281bccac 100644 --- a/account_statement_import_file/i18n/ro.po +++ b/account_statement_import_file/i18n/ro.po @@ -68,9 +68,7 @@ msgstr "" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/ru.po b/account_statement_import_file/i18n/ru.po index f88552da3..3a263213d 100644 --- a/account_statement_import_file/i18n/ru.po +++ b/account_statement_import_file/i18n/ru.po @@ -77,11 +77,8 @@ msgstr "Отображаемое Имя" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" -"Получайте выписки из вашего банка в электронном формате и выбирайте их здесь." #. module: account_statement_import_file #: model:ir.model.fields,field_description:account_statement_import_file.field_account_statement_import__id @@ -265,6 +262,13 @@ msgid "" "imported transactions." msgstr "" +#~ msgid "" +#~ "Get you bank statements in electronic format from your bank and select " +#~ "them here." +#~ msgstr "" +#~ "Получайте выписки из вашего банка в электронном формате и выбирайте их " +#~ "здесь." + #, python-format #~ msgid "Already imported items" #~ msgstr "Уже импортированные позиции" diff --git a/account_statement_import_file/i18n/sk.po b/account_statement_import_file/i18n/sk.po index b5ef3da7b..a5222bab1 100644 --- a/account_statement_import_file/i18n/sk.po +++ b/account_statement_import_file/i18n/sk.po @@ -74,12 +74,8 @@ msgstr "Zobrazovaný Názov" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" -"Získajte svoje bankové výpisy v elektronickej podobe z vašej banky a vyberte " -"ich tu." #. module: account_statement_import_file #: model:ir.model.fields,field_description:account_statement_import_file.field_account_statement_import__id @@ -264,6 +260,13 @@ msgid "" "imported transactions." msgstr "" +#~ msgid "" +#~ "Get you bank statements in electronic format from your bank and select " +#~ "them here." +#~ msgstr "" +#~ "Získajte svoje bankové výpisy v elektronickej podobe z vašej banky a " +#~ "vyberte ich tu." + #, python-format #~ msgid "Already imported items" #~ msgstr "Už importované položky" diff --git a/account_statement_import_file/i18n/sl.po b/account_statement_import_file/i18n/sl.po index 00083cc07..68098f638 100644 --- a/account_statement_import_file/i18n/sl.po +++ b/account_statement_import_file/i18n/sl.po @@ -68,9 +68,7 @@ msgstr "" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/sq.po b/account_statement_import_file/i18n/sq.po index 7cbdf33cc..b2901fd77 100644 --- a/account_statement_import_file/i18n/sq.po +++ b/account_statement_import_file/i18n/sq.po @@ -70,9 +70,7 @@ msgstr "Emri i paraqitur" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/sr.po b/account_statement_import_file/i18n/sr.po index e95ffeafa..27d4e10f4 100644 --- a/account_statement_import_file/i18n/sr.po +++ b/account_statement_import_file/i18n/sr.po @@ -73,9 +73,7 @@ msgstr "" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/sr@latin.po b/account_statement_import_file/i18n/sr@latin.po index 9358b3f0b..631903070 100644 --- a/account_statement_import_file/i18n/sr@latin.po +++ b/account_statement_import_file/i18n/sr@latin.po @@ -76,9 +76,7 @@ msgstr "Naziv za prikaz" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/sv.po b/account_statement_import_file/i18n/sv.po index c8b598723..40a52cfe7 100644 --- a/account_statement_import_file/i18n/sv.po +++ b/account_statement_import_file/i18n/sv.po @@ -75,11 +75,8 @@ msgstr "Visningsnamn" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" -"Hämta dina kontoutdrag i elektroniskt format från din bank och välj dem här." #. module: account_statement_import_file #: model:ir.model.fields,field_description:account_statement_import_file.field_account_statement_import__id @@ -268,6 +265,13 @@ msgstr "" "Du har redan importerat den här filen eller så innehåller den här filen " "endast transaktioner som redan har importerats." +#~ msgid "" +#~ "Get you bank statements in electronic format from your bank and select " +#~ "them here." +#~ msgstr "" +#~ "Hämta dina kontoutdrag i elektroniskt format från din bank och välj dem " +#~ "här." + #, python-format #~ msgid "Already imported items" #~ msgstr "Redan importerade transaktioner" diff --git a/account_statement_import_file/i18n/ta.po b/account_statement_import_file/i18n/ta.po index 1dac664a1..b8fa5615b 100644 --- a/account_statement_import_file/i18n/ta.po +++ b/account_statement_import_file/i18n/ta.po @@ -71,9 +71,7 @@ msgstr "காட்சி பெயர்" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/te.po b/account_statement_import_file/i18n/te.po index cfab6fc58..9ce56b5b3 100644 --- a/account_statement_import_file/i18n/te.po +++ b/account_statement_import_file/i18n/te.po @@ -69,9 +69,7 @@ msgstr "" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/th.po b/account_statement_import_file/i18n/th.po index 7cc093378..a4f2b0dcc 100644 --- a/account_statement_import_file/i18n/th.po +++ b/account_statement_import_file/i18n/th.po @@ -75,9 +75,7 @@ msgstr "ชื่อที่ใช้แสดง" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" #. module: account_statement_import_file diff --git a/account_statement_import_file/i18n/tr.po b/account_statement_import_file/i18n/tr.po index 533b435eb..f5980ea3d 100644 --- a/account_statement_import_file/i18n/tr.po +++ b/account_statement_import_file/i18n/tr.po @@ -83,11 +83,8 @@ msgstr "Görünüm Adı" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" -"Bankanızdan elektronik formatta banka hesap özetini alın ve buradan seçin." #. module: account_statement_import_file #: model:ir.model.fields,field_description:account_statement_import_file.field_account_statement_import__id @@ -271,6 +268,12 @@ msgid "" "imported transactions." msgstr "" +#~ msgid "" +#~ "Get you bank statements in electronic format from your bank and select " +#~ "them here." +#~ msgstr "" +#~ "Bankanızdan elektronik formatta banka hesap özetini alın ve buradan seçin." + #, python-format #~ msgid "Already imported items" #~ msgstr "Zaten İçe Aktarılmış Kalemler" diff --git a/account_statement_import_file/i18n/uk.po b/account_statement_import_file/i18n/uk.po index 57f15b482..5ae48bab0 100644 --- a/account_statement_import_file/i18n/uk.po +++ b/account_statement_import_file/i18n/uk.po @@ -75,11 +75,8 @@ msgstr "Назва для відображення" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" -"Отримайте виписку в електронному форматі з вашого банку та оберіть її тут." #. module: account_statement_import_file #: model:ir.model.fields,field_description:account_statement_import_file.field_account_statement_import__id @@ -263,6 +260,12 @@ msgid "" "imported transactions." msgstr "" +#~ msgid "" +#~ "Get you bank statements in electronic format from your bank and select " +#~ "them here." +#~ msgstr "" +#~ "Отримайте виписку в електронному форматі з вашого банку та оберіть її тут." + #, python-format #~ msgid "Already imported items" #~ msgstr "Вже імпортовані елементи" diff --git a/account_statement_import_file/i18n/vi.po b/account_statement_import_file/i18n/vi.po index 0b51bcb77..a97aea693 100644 --- a/account_statement_import_file/i18n/vi.po +++ b/account_statement_import_file/i18n/vi.po @@ -78,12 +78,8 @@ msgstr "Tên hiển thị" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." +msgid "Download bank statement files from your bank and upload them here." msgstr "" -"Nhận sao kê ngân hàng định dạng điện tử từ ngân hàng của bạn và chọn chúng ở " -"đây." #. module: account_statement_import_file #: model:ir.model.fields,field_description:account_statement_import_file.field_account_statement_import__id @@ -268,6 +264,13 @@ msgid "" "imported transactions." msgstr "" +#~ msgid "" +#~ "Get you bank statements in electronic format from your bank and select " +#~ "them here." +#~ msgstr "" +#~ "Nhận sao kê ngân hàng định dạng điện tử từ ngân hàng của bạn và chọn " +#~ "chúng ở đây." + #, python-format #~ msgid "Already imported items" #~ msgstr "Các hạng mục đã nhập rồi" diff --git a/account_statement_import_file/i18n/zh_CN.po b/account_statement_import_file/i18n/zh_CN.po index 918b29bb6..d63c70c66 100644 --- a/account_statement_import_file/i18n/zh_CN.po +++ b/account_statement_import_file/i18n/zh_CN.po @@ -87,10 +87,8 @@ msgstr "显示名称" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." -msgstr "从银行拿到电子格式的银行对账单并且在这里选择他们" +msgid "Download bank statement files from your bank and upload them here." +msgstr "" #. module: account_statement_import_file #: model:ir.model.fields,field_description:account_statement_import_file.field_account_statement_import__id @@ -274,6 +272,11 @@ msgid "" "imported transactions." msgstr "" +#~ msgid "" +#~ "Get you bank statements in electronic format from your bank and select " +#~ "them here." +#~ msgstr "从银行拿到电子格式的银行对账单并且在这里选择他们" + #, python-format #~ msgid "Already imported items" #~ msgstr "已导入的项目" diff --git a/account_statement_import_file/i18n/zh_TW.po b/account_statement_import_file/i18n/zh_TW.po index 5c0412b00..9fcd92d7d 100644 --- a/account_statement_import_file/i18n/zh_TW.po +++ b/account_statement_import_file/i18n/zh_TW.po @@ -75,10 +75,8 @@ msgstr "顯示名稱" #. module: account_statement_import_file #: model:ir.model.fields,help:account_statement_import_file.field_account_statement_import__statement_file -msgid "" -"Get you bank statements in electronic format from your bank and select them " -"here." -msgstr "從銀行拿到電子格式的銀行對帳單並且在這裡選擇他們" +msgid "Download bank statement files from your bank and upload them here." +msgstr "" #. module: account_statement_import_file #: model:ir.model.fields,field_description:account_statement_import_file.field_account_statement_import__id @@ -262,6 +260,11 @@ msgid "" "imported transactions." msgstr "" +#~ msgid "" +#~ "Get you bank statements in electronic format from your bank and select " +#~ "them here." +#~ msgstr "從銀行拿到電子格式的銀行對帳單並且在這裡選擇他們" + #, python-format #~ msgid "Already imported items" #~ msgstr "已導入的專案" diff --git a/account_statement_import_file/migrations/16.0.1.0.1/post-migration.py b/account_statement_import_file/migrations/16.0.1.0.1/post-migration.py new file mode 100644 index 000000000..dd18c3818 --- /dev/null +++ b/account_statement_import_file/migrations/16.0.1.0.1/post-migration.py @@ -0,0 +1,16 @@ +# Copyright 2023 Landoo Sistemas de Informacion SL +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openupgradelib import openupgrade + + +@openupgrade.migrate() +def migrate(env, version): + openupgrade.logged_query( + env.cr, + """ + UPDATE account_journal + SET bank_statements_source = 'file_import_oca' + WHERE bank_statements_source = 'file_import' + """, + ) diff --git a/account_statement_import_file/models/account_journal.py b/account_statement_import_file/models/account_journal.py index c504807ee..44ef6a299 100644 --- a/account_statement_import_file/models/account_journal.py +++ b/account_statement_import_file/models/account_journal.py @@ -14,7 +14,7 @@ def default_get(self, fields_list): res = super().default_get(fields_list) formats_list = self._get_bank_statements_available_import_formats() if formats_list: - res["bank_statements_source"] = "file_import" + res["bank_statements_source"] = "file_import_oca" return res def _get_bank_statements_available_import_formats(self): @@ -28,7 +28,7 @@ def __get_bank_statements_available_sources(self): formats_list.sort() import_formats_str = ", ".join(formats_list) rslt.insert( - 0, ("file_import", _("Import") + "(" + import_formats_str + ")") + 0, ("file_import_oca", _("Import") + "(" + import_formats_str + ")") ) return rslt diff --git a/account_statement_import_file/static/description/index.html b/account_statement_import_file/static/description/index.html index 81f47ef13..dda526ec4 100644 --- a/account_statement_import_file/static/description/index.html +++ b/account_statement_import_file/static/description/index.html @@ -1,20 +1,20 @@ - + - + Import Statement Files + + +
+

Online Bank Statements

+ + +

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

+

This module provides base for building online bank statements providers.

+

Table of contents

+ +
+

Configuration

+

To configure online bank statements provider:

+
    +
  1. Go to Invoicing > Configuration > Online Bank Statement Providers
  2. +
  3. Create a provider and configure provider-specific settings.
  4. +
+

If you want to allow empty bank statements to be created every time the +information is pulled, you can check the option “Allow empty statements” +at the provider configuration level.

+

NOTE: To access these features, user needs to belong to +Show Full Accounting Features group.

+
+
+

Usage

+

To pull historical bank statements:

+
    +
  1. Go to Invoicing > Configuration > Online Bank Statement Providers
  2. +
  3. Select a specific provider
  4. +
  5. Click on PULL ONLINE BANK STATEMENT
  6. +
  7. Configure date interval and click Pull
  8. +
+

NOTE: To access these features, user needs to belong to +Show Full Accounting Features group.

+
+
+

Bug Tracker

+

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

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • CorporateHub
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

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

+

Current maintainer:

+

alexey-pelykh

+

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

+

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

+
+
+
+ + diff --git a/account_statement_import_online/tests/__init__.py b/account_statement_import_online/tests/__init__.py new file mode 100644 index 000000000..c631b1f09 --- /dev/null +++ b/account_statement_import_online/tests/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import test_account_bank_statement_import_online diff --git a/account_statement_import_online/tests/online_bank_statement_provider_dummy.py b/account_statement_import_online/tests/online_bank_statement_provider_dummy.py new file mode 100644 index 000000000..cb44a7fb7 --- /dev/null +++ b/account_statement_import_online/tests/online_bank_statement_provider_dummy.py @@ -0,0 +1,78 @@ +# Copyright 2019-2020 Brainbean Apps (https://brainbeanapps.com) +# Copyright 2019-2020 Dataplug (https://dataplug.io) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from datetime import datetime, timedelta +from random import randrange + +from dateutil.relativedelta import relativedelta +from pytz import timezone + +from odoo import fields, models + + +class OnlineBankStatementProviderDummy(models.Model): + _inherit = "online.bank.statement.provider" + + def _obtain_statement_data(self, date_since, date_until): + self.ensure_one() + if self.service != "dummy": + return super()._obtain_statement_data( + date_since, + date_until, + ) # pragma: no cover + + if self.env.context.get("crash", False): + exception = self.env.context.get("exception", Exception("Expected")) + raise exception + + line_step_options = self.env.context.get("step", {"minutes": 5}) + line_step = relativedelta(**line_step_options) + expand_by = self.env.context.get("expand_by", 0) + # Override date_since and date_until from context. + override_date_since = self.env.context.get("override_date_since", date_since) + override_date_until = self.env.context.get("override_date_until", date_until) + override_date_since -= expand_by * line_step + override_date_until += expand_by * line_step + + balance_start = self.env.context.get( + "balance_start", randrange(-10000, 10000, 1) * 0.1 + ) + balance = balance_start + + tz = self.env.context.get("tz") + if tz: + tz = timezone(tz) + + timestamp_mode = self.env.context.get("timestamp_mode") + + lines = [] + date = override_date_since + while date < override_date_until: + amount = self.env.context.get("amount", randrange(-100, 100, 1) * 0.1) + transaction_date = date.replace(tzinfo=tz) + if timestamp_mode == "date": + transaction_date = transaction_date.date() + elif timestamp_mode == "str": + transaction_date = fields.Datetime.to_string(transaction_date) + lines.append( + { + "payment_ref": "payment", + "amount": amount, + "date": transaction_date, + "unique_import_id": str( + int((date - datetime(1970, 1, 1)) / timedelta(seconds=1)) + ), + "partner_name": "John Doe", + "account_number": "XX00 0000 0000 0000", + } + ) + balance += amount + date += line_step + balance_end = balance + statement = {} + if self.env.context.get("balance", True): + statement.update( + {"balance_start": balance_start, "balance_end_real": balance_end} + ) + return lines, statement diff --git a/account_statement_import_online/tests/test_account_bank_statement_import_online.py b/account_statement_import_online/tests/test_account_bank_statement_import_online.py new file mode 100644 index 000000000..26ac1c58d --- /dev/null +++ b/account_statement_import_online/tests/test_account_bank_statement_import_online.py @@ -0,0 +1,428 @@ +# Copyright 2019-2020 Brainbean Apps (https://brainbeanapps.com) +# Copyright 2019-2020 Dataplug (https://dataplug.io) +# Copyright 2022-2023 Therp BV (https://therp.nl) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +import logging +from datetime import date, datetime +from unittest import mock +from urllib.error import HTTPError + +from dateutil.relativedelta import relativedelta +from odoo_test_helper import FakeModelLoader + +from odoo import _, fields +from odoo.tests import common + +_logger = logging.getLogger(__name__) + +mock_obtain_statement_data = ( + "odoo.addons.account_statement_import_online.tests." + + "online_bank_statement_provider_dummy.OnlineBankStatementProviderDummy." + + "_obtain_statement_data" +) + + +class TestAccountBankAccountStatementImportOnline(common.TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + + # Load fake model + cls.loader = FakeModelLoader(cls.env, cls.__module__) + cls.loader.backup_registry() + cls.addClassCleanup(cls.loader.restore_registry) + from .online_bank_statement_provider_dummy import ( + OnlineBankStatementProviderDummy, + ) + + cls.loader.update_registry((OnlineBankStatementProviderDummy,)) + + cls.now = fields.Datetime.now() + cls.AccountAccount = cls.env["account.account"] + cls.AccountJournal = cls.env["account.journal"] + cls.OnlineBankStatementProvider = cls.env["online.bank.statement.provider"] + cls.OnlineBankStatementPullWizard = cls.env["online.bank.statement.pull.wizard"] + cls.AccountBankStatement = cls.env["account.bank.statement"] + cls.AccountBankStatementLine = cls.env["account.bank.statement.line"] + + cls.journal = cls.AccountJournal.create( + { + "name": "Bank", + "type": "bank", + "code": "BANK", + "bank_statements_source": "online", + } + ) + cls.provider = cls.OnlineBankStatementProvider.create( + { + "name": "Dummy Provider", + "service": "dummy", + "journal_id": cls.journal.id, + "statement_creation_mode": "daily", + } + ) + + def test_pull_mode_daily(self): + self.provider.statement_creation_mode = "daily" + self.provider.with_context(step={"hours": 2})._pull( + self.now - relativedelta(days=1), + self.now, + ) + self._getExpectedStatements(2) + + def test_pull_mode_weekly(self): + self.provider.statement_creation_mode = "weekly" + self.provider.with_context(step={"hours": 8})._pull( + self.now - relativedelta(weeks=1), + self.now, + ) + self._getExpectedStatements(2) + + def test_pull_mode_monthly(self): + self.provider.statement_creation_mode = "monthly" + self.provider.with_context(step={"hours": 8})._pull( + self.now - relativedelta(months=1), + self.now, + ) + self._getExpectedStatements(2) + + def test_pull_scheduled(self): + self.provider.next_run = self.now - relativedelta(days=15) + self._getExpectedStatements(0) + self.provider.with_context(step={"hours": 8})._scheduled_pull() + self._getExpectedStatements(1) + + def test_pull_skip_duplicates_by_unique_import_id(self): + self.provider.statement_creation_mode = "weekly" + # Get for two weeks of data. + self.provider.with_context( + step={"hours": 8}, + override_date_since=self.now - relativedelta(weeks=2), + override_date_until=self.now, + )._pull( + self.now - relativedelta(weeks=2), + self.now, + ) + expected_count = 14 * (24 / 8) + self._getExpectedLines(expected_count) + # Get two weeks, but one overlapping with previous. + self.provider.with_context( + step={"hours": 8}, + override_date_since=self.now - relativedelta(weeks=3), + override_date_until=self.now - relativedelta(weeks=1), + )._pull( + self.now - relativedelta(weeks=3), + self.now - relativedelta(weeks=1), + ) + expected_count = 21 * (24 / 8) + self._getExpectedLines(expected_count) + # Get another day, but within statements already retrieved. + self.provider.with_context( + step={"hours": 8}, + override_date_since=self.now - relativedelta(weeks=1), + override_date_until=self.now, + )._pull( + self.now - relativedelta(weeks=1), + self.now, + ) + self._getExpectedLines(expected_count) + + def test_interval_type_minutes(self): + self.provider.interval_type = "minutes" + self.provider._compute_update_schedule() + + def test_interval_type_hours(self): + self.provider.interval_type = "hours" + self.provider._compute_update_schedule() + + def test_interval_type_days(self): + self.provider.interval_type = "days" + self.provider._compute_update_schedule() + + def test_interval_type_weeks(self): + self.provider.interval_type = "weeks" + self.provider._compute_update_schedule() + + def test_pull_no_crash(self): + self.provider.statement_creation_mode = "weekly" + self.provider.with_context(crash=True, scheduled=True)._pull( + self.now - relativedelta(hours=1), + self.now, + ) + self._getExpectedStatements(0) + + def test_pull_crash(self): + self.provider.statement_creation_mode = "weekly" + with self.assertRaisesRegex(Exception, "Expected"): + self.provider.with_context(crash=True)._pull( + self.now - relativedelta(hours=1), + self.now, + ) + + def test_pull_httperror(self): + self.provider.statement_creation_mode = "weekly" + with self.assertRaises(HTTPError): + self.provider.with_context( + crash=True, + exception=HTTPError(None, 500, "Error", None, None), + )._pull( + self.now - relativedelta(hours=1), + self.now, + ) + + def test_pull_no_balance(self): + self.provider.with_context( + step={"hours": 2}, + balance_start=0, + amount=100.0, + balance=False, + )._pull( + self.now - relativedelta(days=1), + self.now, + ) + statements = self._getExpectedStatements(2) + self.assertFalse(statements[0].balance_start) + self.assertTrue(statements[0].balance_end) + self.assertTrue(statements[1].balance_start) + + def test_wizard(self): + vals = { + "date_since": self.now - relativedelta(hours=1), + "date_until": self.now, + } + wizard = self.OnlineBankStatementPullWizard.with_context( + active_model=self.provider._name, active_id=self.provider.id + ).create(vals) + wizard.action_pull() + self._getExpectedStatements(1) + + def test_wizard_on_journal(self): + vals = { + "date_since": self.now - relativedelta(hours=1), + "date_until": self.now, + } + wizard = self.OnlineBankStatementPullWizard.with_context( + active_model=self.journal._name, active_id=self.journal.id + ).create(vals) + wizard.action_pull() + self._getExpectedStatements(1) + + def test_pull_statement_partially(self): + self.provider.statement_creation_mode = "monthly" + provider_context = { + "step": {"hours": 24}, + "override_date_since": datetime(2020, 1, 1), + "amount": 1.0, + "balance_start": 0, + } + # Should create statement for first 30 days of january. + self.provider.with_context( + **provider_context, + override_date_until=datetime(2020, 1, 31), + )._pull( + datetime(2020, 1, 1), + datetime(2020, 1, 31), + ) + statements = self._getExpectedStatements(1) + self.assertEqual(statements[0].balance_start, 0.0) + self.assertEqual(statements[0].balance_end_real, 30.0) + # Should create statement for first 14 days of february, + # and add one line to statement for january. + self.provider.with_context( + **provider_context, + override_date_until=datetime(2020, 2, 15), + )._pull( + datetime(2020, 1, 1), + datetime(2020, 2, 29), + ) + statements = self._getExpectedStatements(2) + self.assertEqual(statements[0].balance_start, 0.0) + self.assertEqual(statements[0].balance_end_real, 31.0) + self.assertEqual(statements[1].balance_start, 31.0) + self.assertEqual(statements[1].balance_end_real, 45.0) + # Getting data for rest of februari should not create new statement. + self.provider.with_context( + **provider_context, + override_date_until=datetime(2020, 2, 29), + )._pull( + datetime(2020, 1, 1), + datetime(2020, 2, 29), + ) + statements = self._getExpectedStatements(2) + self.assertEqual(statements[0].balance_start, 0.0) + self.assertEqual(statements[0].balance_end_real, 31.0) + self.assertEqual(statements[1].balance_start, 31.0) + self.assertEqual(statements[1].balance_end_real, 59.0) + + def test_tz_utc(self): + self.provider.tz = "UTC" + self.provider.with_context( + step={"hours": 1}, + override_date_since=datetime(2020, 4, 17, 22, 0), + override_date_until=datetime(2020, 4, 18, 2, 0), + tz="UTC", + )._pull( + datetime(2020, 4, 17, 22, 0), + datetime(2020, 4, 18, 2, 0), + ) + statements = self._getExpectedStatements(2) + lines = statements.mapped("line_ids").sorted(key=lambda r: r.id) + self.assertEqual(len(lines), 4) + self.assertEqual(lines[0].date, date(2020, 4, 17)) + self.assertEqual(lines[1].date, date(2020, 4, 17)) + self.assertEqual(lines[2].date, date(2020, 4, 18)) + self.assertEqual(lines[3].date, date(2020, 4, 18)) + + def test_tz_non_utc(self): + """Test situation where the provider is west of Greenwich. + + In this case, when it is 22:00 according to the provider, it is + 00:00 the next day according to GMT/UTZ. + """ + self.provider.tz = "Etc/GMT-2" + self.provider.with_context( + step={"hours": 1}, + override_date_since=datetime(2020, 4, 17, 22, 0), + override_date_until=datetime(2020, 4, 18, 2, 0), + tz="UTC", + )._pull( + datetime(2020, 4, 17, 22, 0), + datetime(2020, 4, 18, 2, 0), + ) + statements = self._getExpectedStatements(2) + lines = statements.mapped("line_ids").sorted(key=lambda r: r.id) + self.assertEqual(len(lines), 4) + self.assertEqual(lines[0].date, date(2020, 4, 18)) + self.assertEqual(lines[1].date, date(2020, 4, 18)) + self.assertEqual(lines[2].date, date(2020, 4, 18)) + self.assertEqual(lines[3].date, date(2020, 4, 18)) + + def test_other_tz_to_utc(self): + """Test the situation where we are tot the west of the provider. + + Provider will be GMT/UTC, we will be two hours to the west. + When we pull data from 22:00 on the 17th of april, for + the provider this will be from 00:00 on the 18th. + + We will translate the provider times back to our time. + """ + self.provider.with_context( + step={"hours": 1}, + tz="Etc/GMT-2", + override_date_since=datetime(2020, 4, 18, 0, 0), + override_date_until=datetime(2020, 4, 18, 4, 0), + )._pull( + datetime(2020, 4, 17, 22, 0), + datetime(2020, 4, 18, 2, 0), + ) + statements = self._getExpectedStatements(2) + lines = statements.mapped("line_ids").sorted(key=lambda r: r.id) + self.assertEqual(len(lines), 4) + self.assertEqual(lines[0].date, date(2020, 4, 17)) + self.assertEqual(lines[1].date, date(2020, 4, 17)) + self.assertEqual(lines[2].date, date(2020, 4, 18)) + self.assertEqual(lines[3].date, date(2020, 4, 18)) + + def test_timestamp_date_only_date(self): + self.provider.with_context(step={"hours": 1}, timestamp_mode="date")._pull( + datetime(2020, 4, 18, 0, 0), + datetime(2020, 4, 18, 4, 0), + ) + statements = self._getExpectedStatements(1) + lines = statements.line_ids + self.assertEqual(len(lines), 24) + for line in lines: + self.assertEqual(line.date, date(2020, 4, 18)) + + def test_timestamp_date_only_str(self): + self.provider.with_context( + step={"hours": 1}, + override_date_since=datetime(2020, 4, 18, 0, 0), + override_date_until=datetime(2020, 4, 18, 4, 0), + timestamp_mode="str", + )._pull( + datetime(2020, 4, 18, 0, 0), + datetime(2020, 4, 18, 4, 0), + ) + statements = self._getExpectedStatements(1) + lines = statements.line_ids + self.assertEqual(len(lines), 4) + self.assertEqual(lines[0].date, date(2020, 4, 18)) + self.assertEqual(lines[1].date, date(2020, 4, 18)) + self.assertEqual(lines[2].date, date(2020, 4, 18)) + self.assertEqual(lines[3].date, date(2020, 4, 18)) + + def _get_statement_line_data(self, statement_date): + return [ + { + "payment_ref": "payment", + "amount": 100, + "date": statement_date, + "unique_import_id": str(statement_date), + "partner_name": "John Doe", + "account_number": "XX00 0000 0000 0000", + } + ], {} + + def test_dont_create_empty_statements(self): + """Test the default behavior of not creating empty bank + statements ('Allow empty statements' field is uncheck at the + provider level.). + """ + with mock.patch(mock_obtain_statement_data) as mock_data: + mock_data.side_effect = [ + self._get_statement_line_data(date(2021, 8, 10)), + ([], {}), # August 8th, doesn't have statement + ([], {}), # August 9th, doesn't have statement + self._get_statement_line_data(date(2021, 8, 13)), + ] + self.provider._pull(datetime(2021, 8, 10), datetime(2021, 8, 14)) + statements = self._getExpectedStatements(2) + self.assertEqual(statements[0].balance_start, 0) + self.assertEqual(statements[0].balance_end, 100) + self.assertEqual(len(statements[0].line_ids), 1) + self.assertEqual(statements[1].balance_start, 100) + self.assertEqual(statements[1].balance_end, 200) + self.assertEqual(len(statements[1].line_ids), 1) + + def test_unlink_provider(self): + """Unlink provider should clear fields on journal.""" + self.provider.unlink() + self.assertEqual(self.journal.bank_statements_source, "undefined") + self.assertEqual(self.journal.online_bank_statement_provider, False) + self.assertEqual(self.journal.online_bank_statement_provider_id.id, False) + + def _getExpectedStatements(self, expected_length): + """Check for length of statement recordset, with helpfull logging.""" + statements = self.AccountBankStatement.search( + [("journal_id", "=", self.journal.id)], order="date asc" + ) + actual_length = len(statements) + # If length not expected, log information about statements. + if actual_length != expected_length: + if actual_length == 0: + _logger.warning( + _("No statements found in journal"), + ) + else: + _logger.warning( + _("Names and dates for statements found: %(statements)s"), + dict( + statements=", ".join( + ["%s - %s" % (stmt.name, stmt.date) for stmt in statements] + ) + ), + ) + # Now do the normal assert. + self.assertEqual(len(statements), expected_length) + # If we got expected number, return them. + return statements + + def _getExpectedLines(self, expected_length): + """Check number of lines created.""" + lines = self.AccountBankStatementLine.search( + [("journal_id", "=", self.journal.id)] + ) + self.assertEqual(len(lines), expected_length) + # If we got expected number, return them. + return lines diff --git a/account_statement_import_online/views/account_journal.xml b/account_statement_import_online/views/account_journal.xml new file mode 100644 index 000000000..7d32808d3 --- /dev/null +++ b/account_statement_import_online/views/account_journal.xml @@ -0,0 +1,63 @@ + + + + + account.journal.form + account.journal + + + + + + + +