[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:
@@ -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'),
|
||||
|
||||
Reference in New Issue
Block a user