From 58e33891c33775cbb22f8990cc6160415c65a415 Mon Sep 17 00:00:00 2001 From: Pierre Masereel Date: Mon, 16 Sep 2019 11:02:44 +0000 Subject: [PATCH] [FIX] point_of_sale, pos_restaurant: pos order name When a pos order is synched, a name is sent from client so, it has a sequenced name after creation, which is overriden when a write on an existing order is done. So we are only setting the sequenced name when an order is paid to avoid gap in sequence. closes odoo/odoo#36933 Signed-off-by: pimodoo --- addons/point_of_sale/models/pos_order.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/addons/point_of_sale/models/pos_order.py b/addons/point_of_sale/models/pos_order.py index 2c68e064f44..39b1b51a981 100644 --- a/addons/point_of_sale/models/pos_order.py +++ b/addons/point_of_sale/models/pos_order.py @@ -35,7 +35,6 @@ class PosOrder(models.Model): def _order_fields(self, ui_order): process_line = partial(self.env['pos.order.line']._order_line_fields, session_id=ui_order['pos_session_id']) return { - 'name': ui_order['name'], 'user_id': ui_order['user_id'] or False, 'session_id': ui_order['pos_session_id'], 'lines': [process_line(l) for l in ui_order['lines']] if ui_order['lines'] else False, @@ -322,12 +321,19 @@ class PosOrder(models.Model): @api.model def _complete_values_from_session(self, session, values): - values['name'] = session.config_id.sequence_id._next() + if values.get('state') and values['state'] == 'paid': + values['name'] = session.config_id.sequence_id._next() values.setdefault('pricelist_id', session.config_id.pricelist_id.id) values.setdefault('fiscal_position_id', session.config_id.default_fiscal_position_id.id) values.setdefault('company_id', session.config_id.company_id.id) return values + def write(self, vals): + for order in self: + if vals.get('state') and vals['state'] == 'paid' and order.name == '/': + vals['name'] = order.config_id.sequence_id._next() + return super(PosOrder, self).write(vals) + def action_view_invoice(self): return { 'name': _('Customer Invoice'),