diff --git a/addons/point_of_sale/models/pos_order.py b/addons/point_of_sale/models/pos_order.py index abc0eb6dc78..ed07ccd05ba 100644 --- a/addons/point_of_sale/models/pos_order.py +++ b/addons/point_of_sale/models/pos_order.py @@ -1186,9 +1186,14 @@ class PosOrder(models.Model): @api.model def export_for_ui_shared_order(self, config_id): + orders = self._get_shared_orders(config_id) + return orders.export_for_ui() + + @api.model + def _get_shared_orders(self, config_id): config = self.env['pos.config'].browse(config_id) orders = self.env['pos.order'].search(['&', ('state', '=', 'draft'), '|', ('config_id', '=', config_id), ('config_id', 'in', config.trusted_config_ids.ids)]) - return orders.export_for_ui() + return orders def export_for_ui(self): """ Returns a list of dict with each item having similar signature as the return of diff --git a/addons/pos_self_order/models/pos_order.py b/addons/pos_self_order/models/pos_order.py index 9b12e8660a4..f134d07dc40 100644 --- a/addons/pos_self_order/models/pos_order.py +++ b/addons/pos_self_order/models/pos_order.py @@ -161,10 +161,10 @@ class PosOrder(models.Model): return orders @api.model - def export_for_ui_shared_order(self, config_id): - orders = super().export_for_ui_shared_order(config_id) - self_orders = self.get_standalone_self_order().export_for_ui() - return orders + self_orders + def _get_shared_orders(self, config_id): + orders = super()._get_shared_orders(config_id) + self_orders = self.get_standalone_self_order() + return orders | self_orders @api.model def export_for_ui_table_draft(self, table_ids): diff --git a/addons/pos_self_order/static/tests/tours/test_self_order_kiosk.js b/addons/pos_self_order/static/tests/tours/test_self_order_kiosk.js index f80cfa156a1..40bde08b33d 100644 --- a/addons/pos_self_order/static/tests/tours/test_self_order_kiosk.js +++ b/addons/pos_self_order/static/tests/tours/test_self_order_kiosk.js @@ -98,3 +98,17 @@ registry.category("web_tour.tours").add("self_order_kiosk_cancel", { Utils.checkIsDisabledBtn("Order"), ], }); + +registry.category("web_tour.tours").add("self_simple_order", { + test: true, + steps: () => [ + Utils.checkIsNoBtn("My Order"), + Utils.clickBtn("Order Now"), + ProductPage.clickProduct("Coca-Cola"), + Utils.clickBtn("Order"), + CartPage.checkProduct("Coca-Cola", "2.53", "1"), + Utils.clickBtn("Pay"), + Utils.clickBtn("Close"), + Utils.checkIsNoBtn("My Order"), + ], +}); diff --git a/addons/pos_self_order/tests/test_self_order_kiosk.py b/addons/pos_self_order/tests/test_self_order_kiosk.py index 72514d5074d..ab57db18209 100644 --- a/addons/pos_self_order/tests/test_self_order_kiosk.py +++ b/addons/pos_self_order/tests/test_self_order_kiosk.py @@ -32,3 +32,15 @@ class TestSelfOrderKiosk(SelfOrderCommonTest): # Cancel behavior self.start_tour(self_route, "self_order_kiosk_cancel") + + def test_duplicate_order_kiosk(self): + self.pos_config.write({ + 'self_ordering_takeaway': False, + 'self_ordering_mode': 'kiosk', + 'self_ordering_pay_after': 'each', + }) + self.pos_config.with_user(self.pos_user).open_ui() + self_route = self.pos_config._get_self_order_route() + self.start_tour(self_route, "self_simple_order") + orders = self.pos_config.current_session_id.order_ids + self.assertEqual(len(orders.export_for_ui_shared_order(self.pos_config.id)), 1)