[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 <pimodoo@users.noreply.github.com>
This commit is contained in:
Pierre Masereel
2019-09-16 11:02:44 +00:00
parent e022d94f10
commit 58e33891c3
+8 -2
View File
@@ -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'),