From b72b1950d5465b8ed7b89874b3a9a154889c8d8b Mon Sep 17 00:00:00 2001 From: "Adrien Guilliams (adgu)" Date: Fri, 8 Sep 2023 10:03:05 +0200 Subject: [PATCH] [FIX] point_of_sale: demo last order preparation change This PR resolves a bug in the self linked to the demo data. Steps to reproduce: Create a new Restaurant session Open mobile menu for Restaurant Make an order in the mobile menu for a table Reload the page where the open restaurant session is. [BUG] The ball telling if an order is sent to the kitchen or notbecame black. [EXPECTATION] The ball telling if an order is sent to the kitchen or not is red. closes odoo/odoo#134777 Signed-off-by: Robin Heinz (rhe) --- .../point_of_sale/data/point_of_sale_demo.xml | 32 +---------------- .../point_of_sale_onboarding_open_session.xml | 34 ------------------- addons/point_of_sale/models/pos_session.py | 1 - .../static/src/app/store/pos_store.js | 22 ++++-------- .../data/pos_restaurant_demo.xml | 5 ++- ...pos_restaurant_onboarding_open_session.xml | 3 ++ addons/pos_restaurant/models/pos_session.py | 16 +++++++++ 7 files changed, 31 insertions(+), 82 deletions(-) delete mode 100644 addons/point_of_sale/data/point_of_sale_onboarding_open_session.xml diff --git a/addons/point_of_sale/data/point_of_sale_demo.xml b/addons/point_of_sale/data/point_of_sale_demo.xml index 4fa9427b13b..ea87eda0b76 100644 --- a/addons/point_of_sale/data/point_of_sale_demo.xml +++ b/addons/point_of_sale/data/point_of_sale_demo.xml @@ -675,35 +675,5 @@ - - - - - - - - - - - - Shop/00001 - draft - 0.90 - 0.0 - 0.0 - 0.0 - Order 00001-001-0000 - - - - - Orderline 1 - - 0.90 - 0.90 - 0.90 - - LED Lamp - - \ No newline at end of file + diff --git a/addons/point_of_sale/data/point_of_sale_onboarding_open_session.xml b/addons/point_of_sale/data/point_of_sale_onboarding_open_session.xml deleted file mode 100644 index d5a1bfe0cd0..00000000000 --- a/addons/point_of_sale/data/point_of_sale_onboarding_open_session.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - Shop/00001 - draft - 0.90 - 0.0 - 0.0 - 0.0 - Order 00001-001-0000 - - - - Orderline 1 - - 0.90 - 0.90 - 0.90 - - LED Lamp - - diff --git a/addons/point_of_sale/models/pos_session.py b/addons/point_of_sale/models/pos_session.py index f39e87eca27..1b47a7ddc04 100644 --- a/addons/point_of_sale/models/pos_session.py +++ b/addons/point_of_sale/models/pos_session.py @@ -2203,7 +2203,6 @@ class PosSession(models.Model): 'config_id': shop_config.id, 'user_id': self.env.ref('base.user_admin').id, }) - convert.convert_file(self.env, 'point_of_sale', 'data/point_of_sale_onboarding_open_session.xml', None, mode='init', kind='data') def _after_load_onboarding_data(self): config = self.env.ref('point_of_sale.pos_config_main', raise_if_not_found=False) diff --git a/addons/point_of_sale/static/src/app/store/pos_store.js b/addons/point_of_sale/static/src/app/store/pos_store.js index fbd5294eb13..01d194f1423 100644 --- a/addons/point_of_sale/static/src/app/store/pos_store.js +++ b/addons/point_of_sale/static/src/app/store/pos_store.js @@ -226,9 +226,10 @@ export class PosStore extends Reactive { ); const { start_category, iface_start_categ_id } = this.config; this.selectedCategoryId = (start_category && iface_start_categ_id?.[0]) || 0; - this.load_server_orders(); // Push orders in background, do not await this.push_orders(); + // This method is to load the demo datas. + this.load_server_orders(); this.markReady(); } @@ -469,27 +470,18 @@ export class PosStore extends Reactive { } loadOpenOrders(openOrders) { + // This method is for the demo data + let isOrderSet = false; for (const json of openOrders) { if (this.orders.find((el) => el.server_id === json.id)) { continue; } this._createOrder(json); - const newOrder = this.orders[this.orders.length - 1]; - if (newOrder.orderlines[0].uuid) { - for (const line of newOrder.orderlines) { - newOrder.lastOrderPrepaChange[line.uuid + " - "] = { - line_uuid: line.uuid, - name: line.full_product_name, - note: "", - product_id: line.product.id, - quantity: line.quantity, - }; - } + if (!isOrderSet) { + this.selectedOrder = this.orders[this.orders.length - 1]; + isOrderSet = true; } } - if (openOrders.length > 0) { - this.selectedOrder = this.orders[1]; - } } /** diff --git a/addons/pos_restaurant/data/pos_restaurant_demo.xml b/addons/pos_restaurant/data/pos_restaurant_demo.xml index a3a48600758..767a8164201 100644 --- a/addons/pos_restaurant/data/pos_restaurant_demo.xml +++ b/addons/pos_restaurant/data/pos_restaurant_demo.xml @@ -871,5 +871,8 @@ Pizza 4 Formaggi + + - \ No newline at end of file + diff --git a/addons/pos_restaurant/data/pos_restaurant_onboarding_open_session.xml b/addons/pos_restaurant/data/pos_restaurant_onboarding_open_session.xml index 83d4d99fcda..023a6c62444 100644 --- a/addons/pos_restaurant/data/pos_restaurant_onboarding_open_session.xml +++ b/addons/pos_restaurant/data/pos_restaurant_onboarding_open_session.xml @@ -148,4 +148,7 @@ Pizza 4 Formaggi + + diff --git a/addons/pos_restaurant/models/pos_session.py b/addons/pos_restaurant/models/pos_session.py index 408b90be576..98967a6e073 100644 --- a/addons/pos_restaurant/models/pos_session.py +++ b/addons/pos_restaurant/models/pos_session.py @@ -5,6 +5,7 @@ from odoo import models, Command, api from odoo.tools import convert from itertools import groupby from odoo.osv.expression import AND +import json class PosSession(models.Model): _inherit = 'pos.session' @@ -81,3 +82,18 @@ class PosSession(models.Model): 'limit_categories': True, 'iface_available_categ_ids': [Command.link(self.env.ref('pos_restaurant.food').id), Command.link(self.env.ref('pos_restaurant.drinks').id)] }) + + @api.model + def _set_last_order_preparation_change(self, order_ids): + for order_id in order_ids: + order = self.env['pos.order'].browse(order_id) + last_order_preparation_change = {} + for orderline in order['lines']: + last_order_preparation_change[orderline.uuid + " - "] = { + "line_uuid": orderline.uuid, + "name": orderline.full_product_name, + "note": "", + "product_id": orderline.product_id.id, + "quantity": orderline.qty, + } + order.write({'last_order_preparation_change': json.dumps(last_order_preparation_change)})