From caf7eb2090b558649a52def3856eee9b5b4e1626 Mon Sep 17 00:00:00 2001 From: Florent de Labarre Date: Thu, 28 Oct 2021 12:25:35 +0000 Subject: [PATCH] [FIX] point_of_sale: singleton error Issue 1: fix singleton error if open pos session en batch Issue 2: in large database to search all pos.session to get just one closes odoo/odoo#80277 X-original-commit: 63500d6357f6f27724d1cda44db071aba968515a Signed-off-by: Masereel Pierre Co-authored-by: Joseph Caburnay (jcb) --- addons/point_of_sale/models/pos_session.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/addons/point_of_sale/models/pos_session.py b/addons/point_of_sale/models/pos_session.py index 88de5607bcb..dcf180f00c8 100644 --- a/addons/point_of_sale/models/pos_session.py +++ b/addons/point_of_sale/models/pos_session.py @@ -259,9 +259,8 @@ class PosSession(models.Model): if not session.start_at: values['start_at'] = fields.Datetime.now() if session.config_id.cash_control and not session.rescue: - last_sessions = self.env['pos.session'].search([('config_id', '=', self.config_id.id)]).ids - # last session includes the new one already. - self.cash_register_id.balance_start = self.env['pos.session'].browse(last_sessions[1]).cash_register_id.balance_end_real if len(last_sessions) > 1 else 0 + last_session = self.search([('config_id', '=', session.config_id.id), ('id', '!=', session.id)], limit=1) + session.cash_register_id.balance_start = last_session.cash_register_id.balance_end_real if last_session else 0 values['state'] = 'opening_control' else: values['state'] = 'opened'