changeset 841d9290df4a in modules/commission:default
details:
https://hg.tryton.org/modules/commission?cmd=changeset&node=841d9290df4a
description:
Avoid saving invoice and line in loop
issue3516
review12931002
diffstat:
commission.py | 18 ++++++++++--------
1 files changed, 10 insertions(+), 8 deletions(-)
diffs (47 lines):
diff -r 214b58683df2 -r 841d9290df4a commission.py
--- a/commission.py Mon Sep 20 10:34:29 2021 +0200
+++ b/commission.py Fri Oct 08 19:23:27 2021 +0200
@@ -436,6 +436,7 @@
def invoice(cls, commissions):
pool = Pool()
Invoice = pool.get('account.invoice')
+ InvoiceLine = pool.get('account.invoice.line')
def invoice_key(c):
return c._group_to_invoice_key()
@@ -444,12 +445,12 @@
return c._group_to_invoice_line_key()
commissions.sort(key=invoice_key)
invoices = []
- to_write = []
+ invoice_lines = []
+ to_save = []
for key, commissions in groupby(commissions, key=invoice_key):
commissions = list(commissions)
key = dict(key)
invoice = cls._get_invoice(key)
- invoice.save()
invoices.append(invoice)
commissions.sort(key=line_key)
@@ -457,13 +458,14 @@
commissions = [c for c in commissions if not c.invoice_line]
key = dict(key)
invoice_line = cls._get_invoice_line(key, invoice, commissions)
- invoice_line.save()
- to_write.extend([commissions, {
- 'invoice_line': invoice_line.id,
- }])
- if to_write:
- cls.write(*to_write)
+ invoice_lines.append(invoice_line)
+ for commission in commissions:
+ commission.invoice_line = invoice_line
+ to_save.append(commission)
+ Invoice.save(invoices)
+ InvoiceLine.save(invoice_lines)
Invoice.update_taxes(invoices)
+ cls.save(to_save)
def _group_to_invoice_key(self):
direction = {