Improve performance.

This commit refs #22848


(cherry picked from commit a25399ae99)
This commit is contained in:
José Antonio Díaz Miralles 2022-05-05 14:36:04 +02:00 committed by Sergio Morillo
parent 5847a04a51
commit b913d023bd

View file

@ -68,15 +68,15 @@ class MoveLine(metaclass=PoolMeta):
query = (table
.join(payment, type_='LEFT', condition=(
(table.id == payment.line) &
(payment.state != 'failed')))
(table.id == payment.line)
& (payment.state != 'failed')))
.join(account, condition=table.account == account.id)
.join(account_type, condition=account.type == account_type.id)
.select(
amount.as_('amount'),
where=(
(account_type.payable | account_type.receivable) &
(table.id == sql_table.id)),
(account_type.payable | account_type.receivable)
& (table.id == sql_table.id)),
group_by=(table.id, table.second_currency)
))
cursor.execute(*sql_table.update(
@ -93,10 +93,13 @@ class MoveLine(metaclass=PoolMeta):
lines = cls.browse(lines)
lines_amounts = cls.get_payment_amount(lines, None)
lines2ids = {line.id: line for line in lines}
to_save = []
for line_id, amount in lines_amounts.items():
move_line = lines2ids[line_id]
move_line.payment_amount_store = amount
move_line.save()
to_save.append(move_line)
if to_save:
cls.save(to_save)
@classmethod
def search_payment_amount(cls, name, clause):