From 0d6d21bb19abfa533f19c7978939f48935aba87d Mon Sep 17 00:00:00 2001 From: Iryna Vyshnevska Date: Sun, 6 Dec 2020 19:13:40 +0200 Subject: [PATCH 01/16] [14.0][MIG] account_statement_import_camt54 --- account_statement_import_camt54/README.rst | 90 ++++ account_statement_import_camt54/__init__.py | 1 + .../__manifest__.py | 12 + .../models/__init__.py | 2 + .../models/account_statement_import.py | 40 ++ .../models/parser.py | 100 ++++ .../readme/CONTRIBUTORS.rst | 2 + .../readme/DESCRIPTION.rst | 17 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 432 ++++++++++++++++++ .../tests/__init__.py | 1 + .../tests/test_get_partner_ref.py | 65 +++ 12 files changed, 762 insertions(+) create mode 100644 account_statement_import_camt54/README.rst create mode 100644 account_statement_import_camt54/__init__.py create mode 100644 account_statement_import_camt54/__manifest__.py create mode 100644 account_statement_import_camt54/models/__init__.py create mode 100644 account_statement_import_camt54/models/account_statement_import.py create mode 100644 account_statement_import_camt54/models/parser.py create mode 100644 account_statement_import_camt54/readme/CONTRIBUTORS.rst create mode 100644 account_statement_import_camt54/readme/DESCRIPTION.rst create mode 100644 account_statement_import_camt54/static/description/icon.png create mode 100644 account_statement_import_camt54/static/description/index.html create mode 100644 account_statement_import_camt54/tests/__init__.py create mode 100644 account_statement_import_camt54/tests/test_get_partner_ref.py diff --git a/account_statement_import_camt54/README.rst b/account_statement_import_camt54/README.rst new file mode 100644 index 000000000..54f8f43dc --- /dev/null +++ b/account_statement_import_camt54/README.rst @@ -0,0 +1,90 @@ +========================== +Bank Account Camt54 Import +========================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fbank--statement--import-lightgray.png?logo=github + :target: https://github.com/OCA/bank-statement-import/tree/13.0/account_bank_statement_import_oca_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-13-0/bank-statement-import-13-0-account_bank_statement_import_oca_camt54 + :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/13.0 + :alt: Try me on Runbot + +|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. + + +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 smashing 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 + +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..a9a8b6a25 --- /dev/null +++ b/account_statement_import_camt54/__manifest__.py @@ -0,0 +1,12 @@ +# Copyright 2019 Camptocamp SA +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +{ + "name": "Bank Account Camt54 Import", + "version": "14.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"], +} diff --git a/account_statement_import_camt54/models/__init__.py b/account_statement_import_camt54/models/__init__.py new file mode 100644 index 000000000..11ac1bbc1 --- /dev/null +++ b/account_statement_import_camt54/models/__init__.py @@ -0,0 +1,2 @@ +from . import account_statement_import +from . import parser 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..ae863028f --- /dev/null +++ b/account_statement_import_camt54/models/account_statement_import.py @@ -0,0 +1,40 @@ +# 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): + """ Set balance_end_real if not already provided by the file.""" + + statement_line_ids, notifications = super()._create_bank_statements(stmts_vals) + statements = self.env["account.bank.statement"].search( + [("line_ids", "in", statement_line_ids)] + ) + for statement in statements: + if not statement.balance_end_real: + amount = sum(statement.line_ids.mapped("amount")) + statement.balance_end_real = statement.balance_start + amount + return statement_line_ids, notifications + + 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..7c6d41900 --- /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: + 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"' + ) + ) + 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["name"] = 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", + ] + name = transaction["name"] + for xpath_expr in xpath_exprs: + found_node = node.xpath(xpath_expr, namespaces={"ns": ns}) + if found_node: + name = found_node[0].text + break + trans_id_node = ( + node.getparent() + .getparent() + .xpath("./ns:AcctSvcrRef", namespaces={"ns": ns}) + ) + if trans_id_node: + name = "{} ({})".format(name, trans_id_node[0].text) + if name: + transaction["name"] = name + # 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..0cf04074f --- /dev/null +++ b/account_statement_import_camt54/readme/CONTRIBUTORS.rst @@ -0,0 +1,2 @@ +* Yannick Vaucher +* Timon Tschanz diff --git a/account_statement_import_camt54/readme/DESCRIPTION.rst b/account_statement_import_camt54/readme/DESCRIPTION.rst new file mode 100644 index 000000000..63b1f4cf6 --- /dev/null +++ b/account_statement_import_camt54/readme/DESCRIPTION.rst @@ -0,0 +1,17 @@ + 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. + + +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 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 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..fc09fe3d2 --- /dev/null +++ b/account_statement_import_camt54/static/description/index.html @@ -0,0 +1,432 @@ + + + + + + +Bank Account Camt54 Import + + + +
+

Bank Account Camt54 Import

+ + +

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

+
+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.

+
+

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 smashing it by providing a detailed and welcomed +feedback.

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • 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..c2592574e --- /dev/null +++ b/account_statement_import_camt54/tests/__init__.py @@ -0,0 +1 @@ +from . import test_get_partner_ref 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..01170a18d --- /dev/null +++ b/account_statement_import_camt54/tests/test_get_partner_ref.py @@ -0,0 +1,65 @@ +# 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): + def setUp(self): + super().setUp() + self.Parser = self.env["account.statement.import.camt.parser"] + self.ICP = self.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.assertEquals(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.assertEquals(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.assertEquals(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) From 8e9d6d6321808b658adf12304ba2c6d8542a4cb7 Mon Sep 17 00:00:00 2001 From: Iryna Vyshnevska Date: Thu, 14 Jan 2021 13:38:05 +0200 Subject: [PATCH 02/16] [IMP] add option to create addtional final line --- account_statement_import_camt54/README.rst | 20 +++-- .../i18n/account_statement_import_camt54.pot | 81 +++++++++++++++++++ .../models/__init__.py | 1 + .../models/account_journal.py | 14 ++++ .../models/account_statement_import.py | 29 ++++--- .../readme/CREDITS.rst | 1 + .../readme/DESCRIPTION.rst | 5 ++ .../static/description/index.html | 21 +++-- .../tests/__init__.py | 1 + .../tests/test_statement.py | 73 +++++++++++++++++ 10 files changed, 227 insertions(+), 19 deletions(-) create mode 100644 account_statement_import_camt54/i18n/account_statement_import_camt54.pot create mode 100644 account_statement_import_camt54/models/account_journal.py create mode 100644 account_statement_import_camt54/readme/CREDITS.rst create mode 100644 account_statement_import_camt54/tests/test_statement.py diff --git a/account_statement_import_camt54/README.rst b/account_statement_import_camt54/README.rst index 54f8f43dc..91b1c21a1 100644 --- a/account_statement_import_camt54/README.rst +++ b/account_statement_import_camt54/README.rst @@ -14,13 +14,13 @@ Bank Account Camt54 Import :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fbank--statement--import-lightgray.png?logo=github - :target: https://github.com/OCA/bank-statement-import/tree/13.0/account_bank_statement_import_oca_camt54 + :target: https://github.com/OCA/bank-statement-import/tree/14.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-13-0/bank-statement-import-13-0-account_bank_statement_import_oca_camt54 + :target: https://translation.odoo-community.org/projects/bank-statement-import-14-0/bank-statement-import-14-0-account_statement_import_camt54 :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/13.0 + :target: https://runbot.odoo-community.org/runbot/174/14.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -31,6 +31,11 @@ Customer invoices will be reconciled/Paid. Payment entries will be posted into a 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 ------------------------ @@ -54,7 +59,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -72,6 +77,11 @@ Contributors * Yannick Vaucher * Timon Tschanz +Other credits +~~~~~~~~~~~~~ + +* Digital4efficiency.ch + Maintainers ~~~~~~~~~~~ @@ -85,6 +95,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -This module is part of the `OCA/bank-statement-import `_ project on GitHub. +This module is part of the `OCA/bank-statement-import `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/account_statement_import_camt54/i18n/account_statement_import_camt54.pot b/account_statement_import_camt54/i18n/account_statement_import_camt54.pot new file mode 100644 index 000000000..0a45b96e8 --- /dev/null +++ b/account_statement_import_camt54/i18n/account_statement_import_camt54.pot @@ -0,0 +1,81 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_statement_import_camt54 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: account_statement_import_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 +#: 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 +#: 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,field_description:account_statement_import_camt54.field_account_journal__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt54.field_account_statement_import__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt54.field_account_statement_import_camt_parser__display_name +msgid "Display Name" +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.fields,field_description:account_statement_import_camt54.field_account_journal__id +#: model:ir.model.fields,field_description:account_statement_import_camt54.field_account_statement_import__id +#: model:ir.model.fields,field_description:account_statement_import_camt54.field_account_statement_import_camt_parser__id +msgid "ID" +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 "" + +#. module: account_statement_import_camt54 +#: model:ir.model.fields,field_description:account_statement_import_camt54.field_account_journal____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt54.field_account_statement_import____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt54.field_account_statement_import_camt_parser____last_update +msgid "Last Modified on" +msgstr "" diff --git a/account_statement_import_camt54/models/__init__.py b/account_statement_import_camt54/models/__init__.py index 11ac1bbc1..7a228b174 100644 --- a/account_statement_import_camt54/models/__init__.py +++ b/account_statement_import_camt54/models/__init__.py @@ -1,2 +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 index ae863028f..6dc15ec32 100644 --- a/account_statement_import_camt54/models/account_statement_import.py +++ b/account_statement_import_camt54/models/account_statement_import.py @@ -12,18 +12,29 @@ class AccountStatementImport(models.TransientModel): _inherit = "account.statement.import" - def _create_bank_statements(self, stmts_vals): - """ Set balance_end_real if not already provided by the file.""" + def _create_bank_statements(self, stmts_vals, result): + """Create additional line in statement to set bank statement statement + to 0 balance""" - statement_line_ids, notifications = super()._create_bank_statements(stmts_vals) - statements = self.env["account.bank.statement"].search( - [("line_ids", "in", statement_line_ids)] - ) + super()._create_bank_statements(stmts_vals, result) + statements = self.env["account.bank.statement"].browse(result["statement_ids"]) for statement in statements: - if not statement.balance_end_real: - amount = sum(statement.line_ids.mapped("amount")) + amount = sum(statement.line_ids.mapped("amount")) + if statement.journal_id.transfer_line: + if amount != 0: + amount = -amount + statement.line_ids.create( + { + "name": statement.name, + "amount": amount, + "statement_id": statement.id, + "date": statement.date, + "payment_ref": "/", + } + ) + statement.balance_end_real = statement.balance_start + else: statement.balance_end_real = statement.balance_start + amount - return statement_line_ids, notifications def _complete_stmts_vals(self, stmts_vals, journal, account_number): """Search partner from partner reference""" diff --git a/account_statement_import_camt54/readme/CREDITS.rst b/account_statement_import_camt54/readme/CREDITS.rst new file mode 100644 index 000000000..5ee91fa42 --- /dev/null +++ b/account_statement_import_camt54/readme/CREDITS.rst @@ -0,0 +1 @@ +* Digital4efficiency.ch diff --git a/account_statement_import_camt54/readme/DESCRIPTION.rst b/account_statement_import_camt54/readme/DESCRIPTION.rst index 63b1f4cf6..4b97b805a 100644 --- a/account_statement_import_camt54/readme/DESCRIPTION.rst +++ b/account_statement_import_camt54/readme/DESCRIPTION.rst @@ -4,6 +4,11 @@ Customer invoices will be reconciled/Paid. Payment entries will be posted into a 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 ------------------------ diff --git a/account_statement_import_camt54/static/description/index.html b/account_statement_import_camt54/static/description/index.html index fc09fe3d2..05789f760 100644 --- a/account_statement_import_camt54/static/description/index.html +++ b/account_statement_import_camt54/static/description/index.html @@ -367,11 +367,15 @@

Bank Account Camt54 Import

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

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

+

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

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. @@ -387,7 +391,8 @@

Switzerland localisation

  • Credits
  • @@ -397,7 +402,7 @@

    Bug Tracker

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

    +feedback.

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

    @@ -415,14 +420,20 @@

    Contributors

  • Timon Tschanz <timon.tschanz@camptocamp.com>
  • +
    +

    Other credits

    +
      +
    • Digital4efficiency.ch
    • +
    +
    -

    Maintainers

    +

    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.

    +

    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 index c2592574e..002dfdbaf 100644 --- a/account_statement_import_camt54/tests/__init__.py +++ b/account_statement_import_camt54/tests/__init__.py @@ -1 +1,2 @@ from . import test_get_partner_ref +from . import test_statement 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..b7a16fd35 --- /dev/null +++ b/account_statement_import_camt54/tests/test_statement.py @@ -0,0 +1,73 @@ +# Copyright 2020 Camptocamp SA +# Copyright 2020 Tecnativa - Pedro M. Baeza +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +import base64 + +import mock + +from odoo.modules.module import get_module_resource +from odoo.tests.common import SavepointCase + + +class TestGenerateBankStatement(SavepointCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + 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": cls.env.ref("base.EUR").id, + } + ) + + @mock.patch( + "odoo.addons.account.models.sequence_mixin." + "SequenceMixin._constrains_date_sequence", + side_effect=False, + ) + def _load_statement(self, constraint): + 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 + return statement_lines + + def test_statement_import(self): + self.journal.transfer_line = True + lines = self._load_statement() + self.assertEqual(len(lines), 5) + self.assertAlmostEqual(sum(lines.mapped("amount")), 0) + self.journal.transfer_line = False + lines = self._load_statement() + self.assertEqual(len(lines), 4) + self.assertAlmostEqual(sum(lines.mapped("amount")), -12.99) From 09fe482b06c2c4f9c281a6e1e8b747e68240e366 Mon Sep 17 00:00:00 2001 From: Stefan Rijnhart Date: Tue, 2 Feb 2021 09:42:39 +0100 Subject: [PATCH 03/16] [FIX] Fix same eror in camt54 module --- .../models/account_statement_import.py | 3 +-- account_statement_import_camt54/models/parser.py | 12 ++++++------ .../tests/test_get_partner_ref.py | 6 +++--- .../tests/test_statement.py | 9 +-------- 4 files changed, 11 insertions(+), 19 deletions(-) diff --git a/account_statement_import_camt54/models/account_statement_import.py b/account_statement_import_camt54/models/account_statement_import.py index 6dc15ec32..40b6dbf59 100644 --- a/account_statement_import_camt54/models/account_statement_import.py +++ b/account_statement_import_camt54/models/account_statement_import.py @@ -25,11 +25,10 @@ def _create_bank_statements(self, stmts_vals, result): amount = -amount statement.line_ids.create( { - "name": statement.name, "amount": amount, "statement_id": statement.id, "date": statement.date, - "payment_ref": "/", + "payment_ref": statement.name, } ) statement.balance_end_real = statement.balance_start diff --git a/account_statement_import_camt54/models/parser.py b/account_statement_import_camt54/models/parser.py index 7c6d41900..b12b1caa0 100644 --- a/account_statement_import_camt54/models/parser.py +++ b/account_statement_import_camt54/models/parser.py @@ -58,7 +58,7 @@ def parse_transaction_details(self, ns, node, transaction): "./ns:RmtInf/ns:Strd/ns:CdtrRefInf/ns:Ref", namespaces={"ns": ns} ) if len(isr_number): - transaction["name"] = isr_number[0].text + 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 @@ -68,11 +68,11 @@ def parse_transaction_details(self, ns, node, transaction): "./ns:AddtlNtryInf", "/ns:Refs/ns:InstrId", ] - name = transaction["name"] + payment_ref = transaction["payment_ref"] for xpath_expr in xpath_exprs: found_node = node.xpath(xpath_expr, namespaces={"ns": ns}) if found_node: - name = found_node[0].text + payment_ref = found_node[0].text break trans_id_node = ( node.getparent() @@ -80,9 +80,9 @@ def parse_transaction_details(self, ns, node, transaction): .xpath("./ns:AcctSvcrRef", namespaces={"ns": ns}) ) if trans_id_node: - name = "{} ({})".format(name, trans_id_node[0].text) - if name: - transaction["name"] = name + 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 diff --git a/account_statement_import_camt54/tests/test_get_partner_ref.py b/account_statement_import_camt54/tests/test_get_partner_ref.py index 01170a18d..f42b039e8 100644 --- a/account_statement_import_camt54/tests/test_get_partner_ref.py +++ b/account_statement_import_camt54/tests/test_get_partner_ref.py @@ -27,21 +27,21 @@ def test_ICP_no_len(self): 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.assertEquals(partner_ref, "234567") + 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.assertEquals(partner_ref, "234567") + 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.assertEquals(partner_ref, "560") + self.assertEqual(partner_ref, "560") def test_bad_ICP(self): """Test ir config parameter validation""" diff --git a/account_statement_import_camt54/tests/test_statement.py b/account_statement_import_camt54/tests/test_statement.py index b7a16fd35..aa59318f2 100644 --- a/account_statement_import_camt54/tests/test_statement.py +++ b/account_statement_import_camt54/tests/test_statement.py @@ -3,8 +3,6 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). import base64 -import mock - from odoo.modules.module import get_module_resource from odoo.tests.common import SavepointCase @@ -39,12 +37,7 @@ def setUpClass(cls): } ) - @mock.patch( - "odoo.addons.account.models.sequence_mixin." - "SequenceMixin._constrains_date_sequence", - side_effect=False, - ) - def _load_statement(self, constraint): + def _load_statement(self): testfile = get_module_resource( "account_statement_import_camt", "test_files", "test-camt053" ) From 7b5ca4cc14aecc5042b7c059e8d92f6c9c3163c8 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Wed, 3 Feb 2021 08:43:12 +0000 Subject: [PATCH 04/16] account_statement_import_camt54 14.0.1.1.0 --- account_statement_import_camt54/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/account_statement_import_camt54/__manifest__.py b/account_statement_import_camt54/__manifest__.py index a9a8b6a25..a5d82d49c 100644 --- a/account_statement_import_camt54/__manifest__.py +++ b/account_statement_import_camt54/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { "name": "Bank Account Camt54 Import", - "version": "14.0.1.0.0", + "version": "14.0.1.1.0", "category": "Account", "website": "https://github.com/OCA/bank-statement-import", "author": "camptocamp, " "Odoo Community Association (OCA)", From ffd4ad1b16e6aa9de5e5c30faeeb53c675fbc50d Mon Sep 17 00:00:00 2001 From: Sergio Zanchetta Date: Thu, 25 Nov 2021 17:00:16 +0000 Subject: [PATCH 05/16] Added translation using Weblate (Italian) --- account_statement_import_camt54/i18n/it.po | 82 ++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 account_statement_import_camt54/i18n/it.po diff --git a/account_statement_import_camt54/i18n/it.po b/account_statement_import_camt54/i18n/it.po new file mode 100644 index 000000000..b1029afe7 --- /dev/null +++ b/account_statement_import_camt54/i18n/it.po @@ -0,0 +1,82 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_statement_import_camt54 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. module: account_statement_import_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 +#: 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 +#: 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,field_description:account_statement_import_camt54.field_account_journal__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt54.field_account_statement_import__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt54.field_account_statement_import_camt_parser__display_name +msgid "Display Name" +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.fields,field_description:account_statement_import_camt54.field_account_journal__id +#: model:ir.model.fields,field_description:account_statement_import_camt54.field_account_statement_import__id +#: model:ir.model.fields,field_description:account_statement_import_camt54.field_account_statement_import_camt_parser__id +msgid "ID" +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 "" + +#. module: account_statement_import_camt54 +#: model:ir.model.fields,field_description:account_statement_import_camt54.field_account_journal____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt54.field_account_statement_import____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt54.field_account_statement_import_camt_parser____last_update +msgid "Last Modified on" +msgstr "" From 8c2e5066a9222a0ab19b7f3fe7cae8897735b2b1 Mon Sep 17 00:00:00 2001 From: Sergio Zanchetta Date: Thu, 25 Nov 2021 17:00:56 +0000 Subject: [PATCH 06/16] Translated using Weblate (Italian) Currently translated at 50.0% (5 of 10 strings) Translation: bank-statement-import-14.0/bank-statement-import-14.0-account_statement_import_camt54 Translate-URL: https://translation.odoo-community.org/projects/bank-statement-import-14-0/bank-statement-import-14-0-account_statement_import_camt54/it/ --- account_statement_import_camt54/i18n/it.po | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/account_statement_import_camt54/i18n/it.po b/account_statement_import_camt54/i18n/it.po index b1029afe7..0b48266b7 100644 --- a/account_statement_import_camt54/i18n/it.po +++ b/account_statement_import_camt54/i18n/it.po @@ -6,13 +6,15 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2021-11-25 17:36+0000\n" +"Last-Translator: Sergio Zanchetta \n" "Language-Team: none\n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.3.2\n" #. module: account_statement_import_camt54 #: model:ir.model,name:account_statement_import_camt54.model_account_statement_import_camt_parser @@ -50,7 +52,7 @@ msgstr "" #: model:ir.model.fields,field_description:account_statement_import_camt54.field_account_statement_import__display_name #: model:ir.model.fields,field_description:account_statement_import_camt54.field_account_statement_import_camt_parser__display_name msgid "Display Name" -msgstr "" +msgstr "Nome visualizzato" #. module: account_statement_import_camt54 #: model:ir.model.fields,help:account_statement_import_camt54.field_account_journal__transfer_line @@ -62,21 +64,21 @@ msgstr "" #: model:ir.model.fields,field_description:account_statement_import_camt54.field_account_statement_import__id #: model:ir.model.fields,field_description:account_statement_import_camt54.field_account_statement_import_camt_parser__id msgid "ID" -msgstr "" +msgstr "ID" #. module: account_statement_import_camt54 #: model:ir.model,name:account_statement_import_camt54.model_account_statement_import msgid "Import Bank Statement Files" -msgstr "" +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 "" +msgstr "Registro" #. module: account_statement_import_camt54 #: model:ir.model.fields,field_description:account_statement_import_camt54.field_account_journal____last_update #: model:ir.model.fields,field_description:account_statement_import_camt54.field_account_statement_import____last_update #: model:ir.model.fields,field_description:account_statement_import_camt54.field_account_statement_import_camt_parser____last_update msgid "Last Modified on" -msgstr "" +msgstr "Ultima modifica il" From b3d6ea4dc7ed2cff8d0dec9caa8780b6d2591c02 Mon Sep 17 00:00:00 2001 From: Maksym Yankin Date: Wed, 26 Jan 2022 15:34:13 +0200 Subject: [PATCH 07/16] [MIG] account_statement_import_camt54: Migration to 15.0 --- account_statement_import_camt54/README.rst | 10 ++++---- .../__manifest__.py | 2 +- .../i18n/account_statement_import_camt54.pot | 23 +------------------ account_statement_import_camt54/i18n/it.po | 2 +- .../models/account_statement_import.py | 1 + .../models/parser.py | 4 ++-- .../static/description/index.html | 6 ++--- .../tests/test_get_partner_ref.py | 9 ++++---- .../tests/test_statement.py | 8 ++++--- 9 files changed, 24 insertions(+), 41 deletions(-) diff --git a/account_statement_import_camt54/README.rst b/account_statement_import_camt54/README.rst index 91b1c21a1..2c8e7be1e 100644 --- a/account_statement_import_camt54/README.rst +++ b/account_statement_import_camt54/README.rst @@ -14,13 +14,13 @@ Bank Account Camt54 Import :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fbank--statement--import-lightgray.png?logo=github - :target: https://github.com/OCA/bank-statement-import/tree/14.0/account_statement_import_camt54 + :target: https://github.com/OCA/bank-statement-import/tree/15.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-14-0/bank-statement-import-14-0-account_statement_import_camt54 + :target: https://translation.odoo-community.org/projects/bank-statement-import-15-0/bank-statement-import-15-0-account_statement_import_camt54 :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/174/14.0 + :target: https://runbot.odoo-community.org/runbot/174/15.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -59,7 +59,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -95,6 +95,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -This module is part of the `OCA/bank-statement-import `_ project on GitHub. +This module is part of the `OCA/bank-statement-import `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/account_statement_import_camt54/__manifest__.py b/account_statement_import_camt54/__manifest__.py index a5d82d49c..4d83d6284 100644 --- a/account_statement_import_camt54/__manifest__.py +++ b/account_statement_import_camt54/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { "name": "Bank Account Camt54 Import", - "version": "14.0.1.1.0", + "version": "15.0.1.0.0", "category": "Account", "website": "https://github.com/OCA/bank-statement-import", "author": "camptocamp, " "Odoo Community Association (OCA)", diff --git a/account_statement_import_camt54/i18n/account_statement_import_camt54.pot b/account_statement_import_camt54/i18n/account_statement_import_camt54.pot index 0a45b96e8..debaeb891 100644 --- a/account_statement_import_camt54/i18n/account_statement_import_camt54.pot +++ b/account_statement_import_camt54/i18n/account_statement_import_camt54.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 14.0\n" +"Project-Id-Version: Odoo Server 15.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" @@ -44,25 +44,11 @@ msgid "" "e.g. \"13,6\"" msgstr "" -#. module: account_statement_import_camt54 -#: model:ir.model.fields,field_description:account_statement_import_camt54.field_account_journal__display_name -#: model:ir.model.fields,field_description:account_statement_import_camt54.field_account_statement_import__display_name -#: model:ir.model.fields,field_description:account_statement_import_camt54.field_account_statement_import_camt_parser__display_name -msgid "Display Name" -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.fields,field_description:account_statement_import_camt54.field_account_journal__id -#: model:ir.model.fields,field_description:account_statement_import_camt54.field_account_statement_import__id -#: model:ir.model.fields,field_description:account_statement_import_camt54.field_account_statement_import_camt_parser__id -msgid "ID" -msgstr "" - #. module: account_statement_import_camt54 #: model:ir.model,name:account_statement_import_camt54.model_account_statement_import msgid "Import Bank Statement Files" @@ -72,10 +58,3 @@ msgstr "" #: model:ir.model,name:account_statement_import_camt54.model_account_journal msgid "Journal" msgstr "" - -#. module: account_statement_import_camt54 -#: model:ir.model.fields,field_description:account_statement_import_camt54.field_account_journal____last_update -#: model:ir.model.fields,field_description:account_statement_import_camt54.field_account_statement_import____last_update -#: model:ir.model.fields,field_description:account_statement_import_camt54.field_account_statement_import_camt_parser____last_update -msgid "Last Modified on" -msgstr "" diff --git a/account_statement_import_camt54/i18n/it.po b/account_statement_import_camt54/i18n/it.po index 0b48266b7..e7a489570 100644 --- a/account_statement_import_camt54/i18n/it.po +++ b/account_statement_import_camt54/i18n/it.po @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 14.0\n" +"Project-Id-Version: Odoo Server 15.0\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: 2021-11-25 17:36+0000\n" "Last-Translator: Sergio Zanchetta \n" diff --git a/account_statement_import_camt54/models/account_statement_import.py b/account_statement_import_camt54/models/account_statement_import.py index 40b6dbf59..594c656c0 100644 --- a/account_statement_import_camt54/models/account_statement_import.py +++ b/account_statement_import_camt54/models/account_statement_import.py @@ -34,6 +34,7 @@ def _create_bank_statements(self, stmts_vals, result): 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""" diff --git a/account_statement_import_camt54/models/parser.py b/account_statement_import_camt54/models/parser.py index b12b1caa0..ef74f438d 100644 --- a/account_statement_import_camt54/models/parser.py +++ b/account_statement_import_camt54/models/parser.py @@ -35,7 +35,7 @@ def _get_partner_ref(self, isr): start = int(start) - 1 # count from 1 instead of 0 size = int(size) end = start + size - except ValueError: + except ValueError as err: raise exceptions.UserError( _( "Config parameter `isr_partner_ref` is wrong.\n" @@ -43,7 +43,7 @@ def _get_partner_ref(self, isr): "`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): diff --git a/account_statement_import_camt54/static/description/index.html b/account_statement_import_camt54/static/description/index.html index 05789f760..aebd4a1ac 100644 --- a/account_statement_import_camt54/static/description/index.html +++ b/account_statement_import_camt54/static/description/index.html @@ -367,7 +367,7 @@

    Bank Account Camt54 Import

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

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

    +

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

    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)

    @@ -402,7 +402,7 @@

    Bug Tracker

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

    +feedback.

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

    @@ -433,7 +433,7 @@

    Maintainers

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

    -

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

    +

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

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

    diff --git a/account_statement_import_camt54/tests/test_get_partner_ref.py b/account_statement_import_camt54/tests/test_get_partner_ref.py index f42b039e8..4e8f4b136 100644 --- a/account_statement_import_camt54/tests/test_get_partner_ref.py +++ b/account_statement_import_camt54/tests/test_get_partner_ref.py @@ -5,10 +5,11 @@ class TestGetPartnerRef(common.TransactionCase): - def setUp(self): - super().setUp() - self.Parser = self.env["account.statement.import.camt.parser"] - self.ICP = self.env["ir.config_parameter"] + @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""" diff --git a/account_statement_import_camt54/tests/test_statement.py b/account_statement_import_camt54/tests/test_statement.py index aa59318f2..b1db17d95 100644 --- a/account_statement_import_camt54/tests/test_statement.py +++ b/account_statement_import_camt54/tests/test_statement.py @@ -4,13 +4,15 @@ import base64 from odoo.modules.module import get_module_resource -from odoo.tests.common import SavepointCase +from odoo.tests.common import TransactionCase -class TestGenerateBankStatement(SavepointCase): +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", @@ -33,7 +35,7 @@ def setUpClass(cls): "code": "TBNKCAMT", "type": "bank", "bank_account_id": bank.id, - "currency_id": cls.env.ref("base.EUR").id, + "currency_id": eur.id, } ) From ab99a5bf7e743363b91e3522ae0e8ada51fadd7d Mon Sep 17 00:00:00 2001 From: sonhd91 Date: Wed, 15 Feb 2023 17:43:26 +0700 Subject: [PATCH 08/16] [16.0][MIG] account_statement_import_camt54: Migrate to version 16.0 --- account_statement_import_camt54/README.rst | 18 +++++++++------ .../__manifest__.py | 2 +- .../readme/CONTRIBUTORS.rst | 3 +++ .../readme/CREDITS.rst | 1 + .../static/description/index.html | 22 ++++++++++++++----- .../tests/test_statement.py | 10 ++++----- 6 files changed, 37 insertions(+), 19 deletions(-) diff --git a/account_statement_import_camt54/README.rst b/account_statement_import_camt54/README.rst index 2c8e7be1e..391cad9f7 100644 --- a/account_statement_import_camt54/README.rst +++ b/account_statement_import_camt54/README.rst @@ -14,14 +14,14 @@ Bank Account Camt54 Import :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fbank--statement--import-lightgray.png?logo=github - :target: https://github.com/OCA/bank-statement-import/tree/15.0/account_statement_import_camt54 + :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-15-0/bank-statement-import-15-0-account_statement_import_camt54 + :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/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/174/15.0 - :alt: Try me on Runbot +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/webui/builds.html?repo=OCA/bank-statement-import&target_branch=16.0 + :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| @@ -59,7 +59,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -76,11 +76,15 @@ 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 ~~~~~~~~~~~ @@ -95,6 +99,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -This module is part of the `OCA/bank-statement-import `_ project on GitHub. +This module is part of the `OCA/bank-statement-import `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/account_statement_import_camt54/__manifest__.py b/account_statement_import_camt54/__manifest__.py index 4d83d6284..0010f7e90 100644 --- a/account_statement_import_camt54/__manifest__.py +++ b/account_statement_import_camt54/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { "name": "Bank Account Camt54 Import", - "version": "15.0.1.0.0", + "version": "16.0.1.0.0", "category": "Account", "website": "https://github.com/OCA/bank-statement-import", "author": "camptocamp, " "Odoo Community Association (OCA)", diff --git a/account_statement_import_camt54/readme/CONTRIBUTORS.rst b/account_statement_import_camt54/readme/CONTRIBUTORS.rst index 0cf04074f..af39eac6d 100644 --- a/account_statement_import_camt54/readme/CONTRIBUTORS.rst +++ b/account_statement_import_camt54/readme/CONTRIBUTORS.rst @@ -1,2 +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 index 5ee91fa42..c08c9a97b 100644 --- a/account_statement_import_camt54/readme/CREDITS.rst +++ b/account_statement_import_camt54/readme/CREDITS.rst @@ -1 +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/static/description/index.html b/account_statement_import_camt54/static/description/index.html index aebd4a1ac..b32063066 100644 --- a/account_statement_import_camt54/static/description/index.html +++ b/account_statement_import_camt54/static/description/index.html @@ -3,7 +3,7 @@ - + Bank Account Camt54 Import