diff --git a/addons/point_of_sale/static/src/app/pos_store.js b/addons/point_of_sale/static/src/app/pos_store.js index 3bd14b15478..04292576d89 100644 --- a/addons/point_of_sale/static/src/app/pos_store.js +++ b/addons/point_of_sale/static/src/app/pos_store.js @@ -78,10 +78,17 @@ export class PosStore extends Reactive { order.updateLastOrderChange(); } closeScreen() { + this.addOrderIfEmpty(); const { name: screenName } = this.globalState.get_order().get_screen_data(); this.showScreen(screenName); } + addOrderIfEmpty() { + if (!this.globalState.get_order()) { + this.globalState.add_new_order(); + } + } + connectToProxy() { return new Promise((resolve, reject) => { this.barcodeReader?.disconnectFromProxy(); diff --git a/addons/point_of_sale/static/tests/tours/TicketScreen.tour.js b/addons/point_of_sale/static/tests/tours/TicketScreen.tour.js index efc5f8e66ca..dea24a75eae 100644 --- a/addons/point_of_sale/static/tests/tours/TicketScreen.tour.js +++ b/addons/point_of_sale/static/tests/tours/TicketScreen.tour.js @@ -14,6 +14,26 @@ startSteps(); ProductScreen.do.confirmOpeningPopup(); ProductScreen.do.clickHomeCategory(); +Chrome.do.clickMenuButton(); +Chrome.do.clickTicketButton(); +TicketScreen.do.clickNewTicket(); +ProductScreen.exec.addOrderline("Desk Pad", "1", "3"); +Chrome.do.clickMenuButton(); +Chrome.do.clickTicketButton(); +TicketScreen.do.deleteOrder("-0002"); +Chrome.do.confirmPopup(); +TicketScreen.do.clickDiscard(); +ProductScreen.check.orderIsEmpty(); +ProductScreen.exec.addOrderline("Desk Pad", "1", "2"); +Chrome.do.clickMenuButton(); +Chrome.do.clickTicketButton(); +TicketScreen.do.deleteOrder("-0001"); +Chrome.do.confirmPopup(); +TicketScreen.do.clickDiscard(); +Chrome.do.clickMenuButton(); +Chrome.do.clickTicketButton(); +TicketScreen.check.nthRowContains(2, "-0003"); +TicketScreen.do.clickDiscard(); ProductScreen.exec.addOrderline("Desk Pad", "1", "2"); ProductScreen.do.clickPartnerButton(); ProductScreen.do.clickCustomer("Nicole Ford"); @@ -50,7 +70,7 @@ TicketScreen.do.search("Customer", "Nicole"); TicketScreen.check.nthRowContains(2, "Nicole"); TicketScreen.do.search("Customer", "Brandon"); TicketScreen.check.nthRowContains(2, "Brandon"); -TicketScreen.do.search("Receipt Number", "-0003"); +TicketScreen.do.search("Receipt Number", "-0005"); TicketScreen.check.nthRowContains(2, "Receipt"); // Close the TicketScreen to see the current order which is in ReceiptScreen. // This is just to remove the search string in the search bar. @@ -60,10 +80,10 @@ ReceiptScreen.check.isShown(); Chrome.do.clickMenuButton(); Chrome.do.clickTicketButton(); TicketScreen.do.selectFilter("Paid"); -TicketScreen.check.nthRowContains(2, "-0003"); +TicketScreen.check.nthRowContains(2, "-0005"); // Pay the order that was in PaymentScreen. TicketScreen.do.selectFilter("Payment"); -TicketScreen.do.selectOrder("-0002"); +TicketScreen.do.selectOrder("-0004"); PaymentScreen.do.clickPaymentMethod("Cash"); PaymentScreen.do.clickValidate(); ReceiptScreen.check.isShown(); @@ -74,9 +94,9 @@ Chrome.do.clickMenuButton(); Chrome.do.clickTicketButton(); TicketScreen.do.selectFilter("Paid"); TicketScreen.check.nthRowContains(3, "Brandon Freeman"); -TicketScreen.check.nthRowContains(2, "-0003"); +TicketScreen.check.nthRowContains(2, "-0005"); // Invoice order -TicketScreen.do.selectOrder("-0003"); +TicketScreen.do.selectOrder("-0005"); TicketScreen.check.orderWidgetIsNotEmpty(); TicketScreen.do.clickControlButton("Invoice"); Chrome.do.confirmPopup(); @@ -97,7 +117,7 @@ ProductScreen.check.orderIsEmpty(); ProductScreen.do.clickRefund(); // Filter should be automatically 'Paid'. TicketScreen.check.filterIs("Paid"); -TicketScreen.do.selectOrder("-0003"); +TicketScreen.do.selectOrder("-0005"); TicketScreen.check.partnerIs("Colleen Diaz"); TicketScreen.do.clickOrderline("Desk Pad"); TicketScreen.do.pressNumpad("3"); @@ -108,7 +128,7 @@ TicketScreen.do.clickDiscard(); ProductScreen.check.isShown(); ProductScreen.check.orderIsEmpty(); ProductScreen.do.clickRefund(); -TicketScreen.do.selectOrder("-0003"); +TicketScreen.do.selectOrder("-0005"); TicketScreen.do.clickOrderline("Desk Pad"); TicketScreen.do.pressNumpad("1"); TicketScreen.check.toRefundTextContains("To Refund: 1.00"); @@ -128,7 +148,7 @@ ProductScreen.do.pressNumpad("+/- 2"); ProductScreen.check.selectedOrderlineHas("Desk Pad", "-2.00"); // Check if the amount being refunded changed to 2. ProductScreen.do.clickRefund(); -TicketScreen.do.selectOrder("-0003"); +TicketScreen.do.selectOrder("-0005"); TicketScreen.check.toRefundTextContains("Refunding 2.00"); TicketScreen.do.clickDiscard(); // Pay the refund order. @@ -139,7 +159,7 @@ ReceiptScreen.check.isShown(); ReceiptScreen.do.clickNextOrder(); // Check refunded quantity. ProductScreen.do.clickRefund(); -TicketScreen.do.selectOrder("-0003"); +TicketScreen.do.selectOrder("-0005"); TicketScreen.check.refundedNoteContains("2.00 Refunded"); registry.category("web_tour.tours").add("TicketScreenTour", { test: true, url: "/pos/ui", steps: getSteps() }); diff --git a/addons/pos_restaurant/static/src/app/pos_store.js b/addons/pos_restaurant/static/src/app/pos_store.js index cde032ae44c..119a3cea933 100644 --- a/addons/pos_restaurant/static/src/app/pos_store.js +++ b/addons/pos_restaurant/static/src/app/pos_store.js @@ -77,6 +77,11 @@ patch(PosStore.prototype, "pos_restaurant.PosStore", { } return this._super(...arguments); }, + addOrderIfEmpty() { + if (!this.globalState.config.module_pos_restaurant) { + return this._super(...arguments); + } + }, /** * @override * Before closing pos, we remove the event listeners set on window diff --git a/addons/pos_restaurant/static/src/js/Screens/TicketScreen.js b/addons/pos_restaurant/static/src/js/Screens/TicketScreen.js index 5fad0f13b46..e8c9bf7140b 100644 --- a/addons/pos_restaurant/static/src/js/Screens/TicketScreen.js +++ b/addons/pos_restaurant/static/src/js/Screens/TicketScreen.js @@ -72,12 +72,6 @@ patch(TicketScreen.prototype, "pos_restaurant.TicketScreen", { } }, //@override - _selectNextOrder(currentOrder) { - if (this.pos.globalState.config.module_pos_restaurant && this.pos.globalState.table) { - return this._super(...arguments); - } - }, - //@override async onDeleteOrder(order) { const _super = this._super; const { globalState } = this.pos;