From f66aae4d0be5d1d42bee912ae7e839b99c63ee5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 20 Jan 2025 19:59:12 +0100 Subject: [PATCH] Use statement date to compute the start balance Closes #13827 --- modules/account_statement/CHANGELOG | 1 + modules/account_statement/statement.py | 20 ++++++++++++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/modules/account_statement/CHANGELOG b/modules/account_statement/CHANGELOG index 6e5a469aa5..88c6f6ee9e 100644 --- a/modules/account_statement/CHANGELOG +++ b/modules/account_statement/CHANGELOG @@ -1,3 +1,4 @@ +* Use statement date to compute the start balance * Add reporting with latest date and amount per journal Version 7.4.0 - 2024-11-04 diff --git a/modules/account_statement/statement.py b/modules/account_statement/statement.py index 54580d097e..5e394a7f95 100644 --- a/modules/account_statement/statement.py +++ b/modules/account_statement/statement.py @@ -202,10 +202,22 @@ class Statement(Workflow, ModelSQL, ModelView): Date = Pool().get('ir.date') return Date.today() - @fields.depends('journal') - def on_change_journal(self): - if self.journal and self.journal.validation == 'balance': - self.start_balance = self.journal.last_amount + @fields.depends('company', 'journal', 'date') + def on_change_with_start_balance(self): + if (all([self.company, self.journal, self.date]) + and self.journal.validation == 'balance'): + if statements := self.search([ + ('company', '=', self.company.id), + ('journal', '=', self.journal.id), + ('date', '<=', self.date), + ], + order=[ + ('date', 'DESC'), + ('id', 'DESC'), + ], + limit=1): + statement, = statements + return statement.end_balance @fields.depends('journal') def on_change_with_currency(self, name=None):