diff --git a/addons/point_of_sale/models/pos_order.py b/addons/point_of_sale/models/pos_order.py index 33af3087e86..670c88b8613 100644 --- a/addons/point_of_sale/models/pos_order.py +++ b/addons/point_of_sale/models/pos_order.py @@ -104,6 +104,9 @@ class PosOrder(models.Model): return new_session + def _get_fields_for_draft_order(self): + """This method is here to be overridden in order to add fields that are required for draft orders.""" + return [] @api.model def _process_order(self, order, draft, existing_order): diff --git a/addons/pos_hr/models/pos_order.py b/addons/pos_hr/models/pos_order.py index f11c6c2e2d2..f702f57dee9 100644 --- a/addons/pos_hr/models/pos_order.py +++ b/addons/pos_hr/models/pos_order.py @@ -28,3 +28,8 @@ class PosOrder(models.Model): 'employee_id': order.employee_id.id, }) return result + + def _get_fields_for_draft_order(self): + fields = super(PosOrder, self)._get_fields_for_draft_order() + fields.append('employee_id') + return fields diff --git a/addons/pos_hr/static/src/js/models.js b/addons/pos_hr/static/src/js/models.js index e6af39c7e9c..328651bb7b4 100644 --- a/addons/pos_hr/static/src/js/models.js +++ b/addons/pos_hr/static/src/js/models.js @@ -65,7 +65,7 @@ const PosHrOrder = (Order) => class PosHrOrder extends Order { } init_from_JSON(json) { super.init_from_JSON(...arguments); - if (this.pos.config.module_pos_hr) { + if (this.pos.config.module_pos_hr && json.employee_id) { this.cashier = this.pos.employee_by_id[json.employee_id]; } } diff --git a/addons/pos_restaurant/models/pos_order.py b/addons/pos_restaurant/models/pos_order.py index dffd7e830a7..25cfd42d3fc 100644 --- a/addons/pos_restaurant/models/pos_order.py +++ b/addons/pos_restaurant/models/pos_order.py @@ -132,7 +132,8 @@ class PosOrder(models.Model): next(order for order in orders if order['id'] == order_id[0])['statement_ids'] = list(payment_lines) def _get_fields_for_draft_order(self): - return [ + fields = super(PosOrder, self)._get_fields_for_draft_order() + fields.extend([ 'id', 'pricelist_id', 'partner_id', @@ -146,7 +147,8 @@ class PosOrder(models.Model): 'table_id', 'to_invoice', 'multiprint_resume', - ] + ]) + return fields @api.model def get_table_draft_orders(self, table_id): @@ -160,8 +162,8 @@ class PosOrder(models.Model): :returns: list -- list of dict representing the table orders """ table_orders = self.search_read( - domain = [('state', '=', 'draft'), ('table_id', '=', table_id)], - fields = self._get_fields_for_draft_order()) + domain=[('state', '=', 'draft'), ('table_id', '=', table_id)], + fields=self._get_fields_for_draft_order()) self._get_order_lines(table_orders) self._get_payment_lines(table_orders) @@ -180,6 +182,8 @@ class PosOrder(models.Model): order['partner_id'] = order['partner_id'][0] if order['table_id']: order['table_id'] = order['table_id'][0] + if order['employee_id']: + order['employee_id'] = order['employee_id'][0] if order['employee_id'] else False if not 'lines' in order: order['lines'] = []