From 73c805a054af4ffb65a7e25ed820bc2dd999697b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 4 Aug 2026 15:56:21 +0200 Subject: [PATCH] Use instances when copying analytic account entries to new line Closes #14988 --- modules/analytic_account/account.py | 9 +++++++++ modules/analytic_purchase/purchase.py | 7 ++----- modules/analytic_sale/sale.py | 7 ++----- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/modules/analytic_account/account.py b/modules/analytic_account/account.py index c7360a4704..cd3b79ea37 100644 --- a/modules/analytic_account/account.py +++ b/modules/analytic_account/account.py @@ -436,6 +436,15 @@ class AnalyticAccountEntry(ModelView, ModelSQL): analytic_line.date = date yield analytic_line + @classmethod + def copy_to(cls, entries, origin): + for entry in entries: + new = cls() + new.origin = origin + new.root = entry.root + new.account = entry.account + yield new + class AnalyticMixin(object): __slots__ = () diff --git a/modules/analytic_purchase/purchase.py b/modules/analytic_purchase/purchase.py index 9b5f6c17f5..3465fa1fa0 100644 --- a/modules/analytic_purchase/purchase.py +++ b/modules/analytic_purchase/purchase.py @@ -26,11 +26,8 @@ class PurchaseLine(AnalyticMixin, metaclass=PoolMeta): invoice_lines = super().get_invoice_line() for invoice_line in invoice_lines: - new_entries = AnalyticAccountEntry.copy(self.analytic_accounts, - default={ - 'origin': None, - }) - invoice_line.analytic_accounts = new_entries + invoice_line.analytic_accounts = AnalyticAccountEntry.copy_to( + self.analytic_accounts, invoice_line) return invoice_lines diff --git a/modules/analytic_sale/sale.py b/modules/analytic_sale/sale.py index 05ebdaaf9a..10e70f5280 100644 --- a/modules/analytic_sale/sale.py +++ b/modules/analytic_sale/sale.py @@ -26,11 +26,8 @@ class Line(AnalyticMixin, metaclass=PoolMeta): invoice_lines = super().get_invoice_line() for invoice_line in invoice_lines: - new_entries = AnalyticAccountEntry.copy(self.analytic_accounts, - default={ - 'origin': None, - }) - invoice_line.analytic_accounts = new_entries + invoice_line.analytic_accounts = AnalyticAccountEntry.copy_to( + self.analytic_accounts, invoice_line) return invoice_lines