From 0b97f06cfffb1771783ade9c4e67d78c2ba53cdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 13 Dec 2016 18:29:17 +0100 Subject: [PATCH] Use list instead of dictionary to store invoice lines A list is less expensive than a dictionary. issue6037 review29021002 --- purchase.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/purchase.py b/purchase.py index 1b3f177b7a..f90583d974 100644 --- a/purchase.py +++ b/purchase.py @@ -682,18 +682,17 @@ class Purchase(Workflow, ModelSQL, ModelView, TaxableMixin): self.raise_user_error('missing_account_payable', error_args=(self.party.rec_name,)) - invoice_lines = {} + invoice_lines = [] for line in self.lines: - ilines = line.get_invoice_line() - if ilines: - invoice_lines[line.id] = ilines + invoice_lines.append(line.get_invoice_line()) + invoice_lines = list(chain(*invoice_lines)) if not invoice_lines: return invoice = self._get_invoice_purchase() - invoice.lines = list(chain.from_iterable( - invoice_lines[l.id] for l in self.lines - if l.id in invoice_lines)) + if getattr(invoice, 'lines', None): + invoice_lines = list(invoice.lines) + invoice_lines + invoice.lines = invoice_lines invoice.save() Invoice.update_taxes([invoice])