From 5cda77179968afb470178a51c1bcc209fb485950 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Fri, 4 Oct 2024 10:07:41 +0200 Subject: [PATCH] [FIX] account_statement_base: Allow add lines from bank statment form view TT50906 --- .../models/account_bank_statement.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/account_statement_base/models/account_bank_statement.py b/account_statement_base/models/account_bank_statement.py index 5dcae41d..609f70c2 100644 --- a/account_statement_base/models/account_bank_statement.py +++ b/account_statement_base/models/account_bank_statement.py @@ -4,6 +4,25 @@ from odoo import _, models class AccountBankStatement(models.Model): _inherit = "account.bank.statement" + # TODO: Delete if merged https://github.com/odoo/odoo/pull/182497 + def _compute_date_index(self): + """The super() method does not take into account lines that do not have + internal_index set yet, and causes sorted() to fail, we need to re-define + the method in these cases to avoid the error. + """ + _self = self + for stmt in self: + if any(not line.internal_index for line in stmt.line_ids): + _self -= stmt + sorted_lines = stmt.line_ids.filtered("internal_index").sorted( + "internal_index" + ) + stmt.first_line_index = sorted_lines[:1].internal_index + stmt.date = sorted_lines.filtered(lambda l: l.state == "posted")[ + -1: + ].date + return super(AccountBankStatement, _self)._compute_date_index() + def action_open_statement_lines(self): self.ensure_one() if not self: