diff --git a/addons/point_of_sale/models/pos_order.py b/addons/point_of_sale/models/pos_order.py index 472c9fb802b..22d924dcfc6 100644 --- a/addons/point_of_sale/models/pos_order.py +++ b/addons/point_of_sale/models/pos_order.py @@ -435,8 +435,9 @@ class PosOrder(models.Model): for order in orders: existing_order = False if 'server_id' in order['data']: - existing_order = self.env['pos.order'].search([('id', '=', order['data']['server_id'])], limit=1) - order_ids.append(self._process_order(order, draft, existing_order)) + existing_order = self.env['pos.order'].search(['|', ('id', '=', order['data']['server_id']), ('pos_reference', '=', order['data']['name'])], limit=1) + if (existing_order and existing_order.state == 'draft') or not existing_order: + order_ids.append(self._process_order(order, draft, existing_order)) return self.env['pos.order'].search_read(domain = [('id', 'in', order_ids)], fields = ['id', 'pos_reference'])