From e8c0047fca6915f650037679b99cb2ff933196d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sat, 28 Feb 2026 15:26:23 +0100 Subject: [PATCH] Sort statement lines per origin before creating moves Closes #13941 --- modules/account_statement/statement.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/modules/account_statement/statement.py b/modules/account_statement/statement.py index 622572e0bf..6606d3cfce 100644 --- a/modules/account_statement/statement.py +++ b/modules/account_statement/statement.py @@ -490,8 +490,16 @@ class Statement(Workflow, ModelSQL, ModelView, ChatMixin): moves = [] for statement in statements: - for key, lines in groupby( - statement.lines, key=statement._group_key): + if statement.origins: + origin_index = { + o: index for index, o in enumerate(statement.origins)} + size = len(statement.origins) + sorted_lines = sorted( + statement.lines, + key=lambda l: origin_index.get(l.origin, size)) + else: + sorted_lines = statement.lines + for key, lines in groupby(sorted_lines, key=statement._group_key): lines = list(lines) key = dict(key) move = statement._get_move(key)