[FIX] pos_hr: save cashier correctly in db

Current behavior:
In PoS restaurant cashier were not saved correctly in db if you
switched table before making the payment of the order.

Steps to reproduce:
- Install PoS
- Activate restaurant on one of your PoS
- Activate Authorized employee
- Start a PoS session, and select a cashier
- Create an order on a table
- Leave the table and comeback to it
- Make the payment for the order
- Go in the PoS orders, the cashier wasn't saved

opw-2794574

closes odoo/odoo#91447

X-original-commit: 2c6ea058f9f8cfaf75529ff4028913a59f021ab8
Signed-off-by: Masereel Pierre <pim@odoo.com>
Signed-off-by: Trinh Jacky (trj) <trj@odoo.com>
Signed-off-by: Engels Robin (roen) <roen@odoo.com>
This commit is contained in:
roen-odoo
2022-05-16 13:57:12 +02:00
committed by Jacky (trj)
parent 301076e2ce
commit e18eeca7d1
4 changed files with 17 additions and 5 deletions
+3
View File
@@ -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):
+5
View File
@@ -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
+1 -1
View File
@@ -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];
}
}
+8 -4
View File
@@ -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'] = []