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