[FIX] pos: reconciliation and performance issues (#24610)
Before this commit, the complete list of orders of the pos session was processed through the reconciliation mechanism to check if an automatic reconciliation was possible (introduced in a controversial 'bug fix' atfe70f07, itself a backport of a master commit ata2319b4). The goal of this auto-reconciliation was to avoid potentially silent and numerous customer statements that could be reconciled automatically. This is mostly useless in a lot of cases, since a lot of users do not set any partner_id value on the pos order - there is nothing useful to reconcile. Going through the whole list of orders is time-wasting (especially since the reconciliation method does not scale well). Combine this with users who do not close their POS session often enough and closing a session can suddenly take up to several hours to process instead of several seconds with practically no obvious gain. After this commit, only orders which have a partner set on them will be auto-reconciled. opw-1818838 and opw-1817172
This commit is contained in:
committed by
Lucas Perais
parent
c25b68f324
commit
e2efec8e54
@@ -29,8 +29,8 @@ class PosSession(models.Model):
|
||||
if order.state not in ('paid'):
|
||||
raise UserError(_("You cannot confirm all orders of this session, because they have not the 'paid' status"))
|
||||
order.action_pos_order_done()
|
||||
orders = session.order_ids.filtered(lambda order: order.state in ['invoiced', 'done'])
|
||||
orders.sudo()._reconcile_payments()
|
||||
orders_to_reconcile = session.order_ids.filtered(lambda order: order.state in ['invoiced', 'done'] and order.partner_id)
|
||||
orders_to_reconcile.sudo()._reconcile_payments()
|
||||
|
||||
config_id = fields.Many2one(
|
||||
'pos.config', string='Point of Sale',
|
||||
|
||||
Reference in New Issue
Block a user