diff --git a/account_bank_statement_clear_partner/__manifest__.py b/account_bank_statement_clear_partner/__manifest__.py index 9ff5eb16..88e2442b 100644 --- a/account_bank_statement_clear_partner/__manifest__.py +++ b/account_bank_statement_clear_partner/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { "name": "Clear all partners in bank statement lines", - "version": "13.0.1.0.0", + "version": "15.0.1.0.0", # see https://odoo-community.org/page/development-status "development_status": "Production/Stable", "category": "Invoicing Management", diff --git a/account_bank_statement_clear_partner/models/account_bank_statement.py b/account_bank_statement_clear_partner/models/account_bank_statement.py index 30cf2bc6..c275b324 100644 --- a/account_bank_statement_clear_partner/models/account_bank_statement.py +++ b/account_bank_statement_clear_partner/models/account_bank_statement.py @@ -8,6 +8,6 @@ class AccountBankStatementClearPartner(models.Model): _inherit = "account.bank.statement" def clear_partners(self): - self.mapped("line_ids").filtered( - lambda x: not x.journal_entry_ids and not x.account_id - ).write({"partner_id": False}) + for line in self.line_ids: + if not line.is_reconciled: + line.write({"partner_id": False}) diff --git a/account_bank_statement_clear_partner/readme/CONTRIBUTORS.rst b/account_bank_statement_clear_partner/readme/CONTRIBUTORS.rst index d834bd27..6b8aaace 100644 --- a/account_bank_statement_clear_partner/readme/CONTRIBUTORS.rst +++ b/account_bank_statement_clear_partner/readme/CONTRIBUTORS.rst @@ -4,3 +4,4 @@ * João Marques * Pedro M. Baeza * Carlos Roca + * César A. Sánchez diff --git a/account_bank_statement_clear_partner/tests/test_account_bank_statement_clear_patner.py b/account_bank_statement_clear_partner/tests/test_account_bank_statement_clear_patner.py index 63ff706e..489e710f 100644 --- a/account_bank_statement_clear_partner/tests/test_account_bank_statement_clear_patner.py +++ b/account_bank_statement_clear_partner/tests/test_account_bank_statement_clear_patner.py @@ -5,11 +5,39 @@ from odoo.tests import common class TestAccountBankStatementClearPartner(common.SavepointCase): + @classmethod + def setup_multi_currency_data(cls, default_values=None, rate2016=3.0, rate2017=2.0): + default_values = default_values or {} + foreign_currency = cls.env["res.currency"].search( + [("active", "=", False)], limit=1 + ) + rate1 = cls.env["res.currency.rate"].create( + { + "name": "2016-01-01", + "rate": rate2016, + "currency_id": foreign_currency.id, + "company_id": cls.env.company.id, + } + ) + rate2 = cls.env["res.currency.rate"].create( + { + "name": "2017-01-01", + "rate": rate2017, + "currency_id": foreign_currency.id, + "company_id": cls.env.company.id, + } + ) + return { + "currency": foreign_currency, + "rates": rate1 + rate2, + } + @classmethod def setUpClass(cls): super(TestAccountBankStatementClearPartner, cls).setUpClass() cls.partner_1 = cls.env["res.partner"].create({"name": "Partner 1"}) cls.partner_2 = cls.env["res.partner"].create({"name": "Partner 2"}) + cls.currency_data = cls.setup_multi_currency_data() cls.account_type_1 = cls.env["account.account.type"].create( {"name": "Test Account Type 1", "type": "other", "internal_group": "income"} ) @@ -25,26 +53,24 @@ class TestAccountBankStatementClearPartner(common.SavepointCase): { "name": "Test Journal 1", "type": "bank", - "sequence_id": cls.sequence_1.id, + "secure_sequence_id": cls.sequence_1.id, } ) cls.statement_1 = cls.env["account.bank.statement"].create( {"name": "Test Bank Statement 1", "journal_id": cls.journal_1.id} ) - cls.account_move_1 = cls.env["account.move"].create( - {"name": "Test Account Move 1", "journal_id": cls.journal_1.id} - ) - cls.account_move_line_1 = cls.env["account.move.line"].create( - {"move_id": cls.account_move_1.id, "account_id": cls.account_1.id} - ) + + cls.currency_2 = cls.currency_data["currency"] line_obj = cls.env["account.bank.statement.line"] cls.st_line_w_partner_not_reconciled = line_obj.create( { "name": "Test Account Bank Statement 1", "statement_id": cls.statement_1.id, "partner_id": cls.partner_1.id, - "journal_entry_ids": False, - "account_id": False, + "payment_ref": "REF-TEST-1", + "foreign_currency_id": cls.currency_2.id, + "amount": 1250.0, + "amount_currency": 2500.0, } ) cls.st_line_wo_partner_not_reconciled = line_obj.create( @@ -52,8 +78,7 @@ class TestAccountBankStatementClearPartner(common.SavepointCase): "name": "Test Account Bank Statement 2", "statement_id": cls.statement_1.id, "partner_id": False, - "journal_entry_ids": False, - "account_id": False, + "payment_ref": "REF-TEST-2", } ) cls.st_line_w_partner_reconciled = line_obj.create( @@ -61,10 +86,27 @@ class TestAccountBankStatementClearPartner(common.SavepointCase): "name": "Test Account Bank Statement 3", "statement_id": cls.statement_1.id, "partner_id": cls.partner_2.id, + "payment_ref": "REF-TEST-3", } ) - cls.account_move_line_1.write( - {"statement_line_id": cls.st_line_w_partner_reconciled.id} + + cls.account_move_1 = cls.env["account.move"].create( + { + "move_type": "entry", + "journal_id": cls.journal_1.id, + "invoice_line_ids": [ + ( + 0, + 0, + { + "name": "50 to pay", + "account_id": cls.account_1.id, + "amount_residual": 1, + "statement_line_id": cls.st_line_w_partner_reconciled.id, + }, + ) + ], + } ) def test_bank_statements_clear_partner(self): diff --git a/account_bank_statement_clear_partner/views/account_bank_statement_views.xml b/account_bank_statement_clear_partner/views/account_bank_statement_views.xml index 06664126..9dadd825 100644 --- a/account_bank_statement_clear_partner/views/account_bank_statement_views.xml +++ b/account_bank_statement_clear_partner/views/account_bank_statement_views.xml @@ -6,7 +6,7 @@ account.bank.statement -