From 07e47a83b84fd5e6e57df3d6fb9156eee39ba6c4 Mon Sep 17 00:00:00 2001 From: Jordi Ballester Alomar Date: Wed, 22 Feb 2023 17:44:24 +0100 Subject: [PATCH] [IMP] account_statement_import_txt_xlsx: Calculate final balance if not provided in the import file --- .../models/account_statement_import.py | 10 ++++++++++ .../models/account_statement_import_sheet_parser.py | 11 +++++------ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/account_statement_import_txt_xlsx/models/account_statement_import.py b/account_statement_import_txt_xlsx/models/account_statement_import.py index 0ef50771..6f74228d 100644 --- a/account_statement_import_txt_xlsx/models/account_statement_import.py +++ b/account_statement_import_txt_xlsx/models/account_statement_import.py @@ -36,3 +36,13 @@ class AccountStatementImport(models.TransientModel): raise _logger.warning("Sheet parser error", exc_info=True) return super()._parse_file(data_file) + + def _create_bank_statements(self, stmts_vals, result): + """Set balance_end_real if not already provided by the file.""" + res = 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")) + statement.balance_end_real = statement.balance_start + amount + return res diff --git a/account_statement_import_txt_xlsx/models/account_statement_import_sheet_parser.py b/account_statement_import_txt_xlsx/models/account_statement_import_sheet_parser.py index 4d480378..b629da86 100644 --- a/account_statement_import_txt_xlsx/models/account_statement_import_sheet_parser.py +++ b/account_statement_import_txt_xlsx/models/account_statement_import_sheet_parser.py @@ -67,6 +67,11 @@ class AccountStatementImportSheetParser(models.TransientModel): last_line = lines[-1] data = { "date": first_line["timestamp"].date(), + "name": _("%s: %s") + % ( + journal.code, + path.basename(filename), + ), } if mapping.balance_column: @@ -77,14 +82,8 @@ class AccountStatementImportSheetParser(models.TransientModel): { "balance_start": float(balance_start), "balance_end_real": float(balance_end), - "name": _("%s: %s") - % ( - journal.code, - path.basename(filename), - ), } ) - transactions = list( itertools.chain.from_iterable( map(lambda line: self._convert_line_to_transactions(line), lines)