diff --git a/addons/pos_online_payment_self_order/static/src/components/order_widget/order_widget.js b/addons/pos_online_payment_self_order/static/src/components/order_widget/order_widget.js index ad166f5c9c6..088a84af891 100644 --- a/addons/pos_online_payment_self_order/static/src/components/order_widget/order_widget.js +++ b/addons/pos_online_payment_self_order/static/src/components/order_widget/order_widget.js @@ -18,7 +18,7 @@ patch(OrderWidget.prototype, { return super.buttonToShow; } - if (order.amount_total === 0 && !isNoLine) { + if (order.amount_total === 0 && !isNoLine && mode !== "each") { return { label: _t("Order"), disabled: false }; } diff --git a/addons/pos_online_payment_self_order/static/src/pages/payment_page/payment_page.js b/addons/pos_online_payment_self_order/static/src/pages/payment_page/payment_page.js index cabe3f2c770..234eb4a4b1e 100644 --- a/addons/pos_online_payment_self_order/static/src/pages/payment_page/payment_page.js +++ b/addons/pos_online_payment_self_order/static/src/pages/payment_page/payment_page.js @@ -24,10 +24,7 @@ patch(PaymentPage.prototype, { }, get selectedPaymentIsOnline() { const paymentMethods = this.selectedPaymentMethod; - return ( - paymentMethods && - paymentMethods.is_online_payment - ); + return paymentMethods && paymentMethods.is_online_payment; }, generateQrcodeImg(url) { const codeWriter = new window.ZXing.BrowserQRCodeSvgWriter(); diff --git a/addons/pos_self_order/static/src/app/self_order_service.js b/addons/pos_self_order/static/src/app/self_order_service.js index aa35e1332f7..fe090f0d18a 100644 --- a/addons/pos_self_order/static/src/app/self_order_service.js +++ b/addons/pos_self_order/static/src/app/self_order_service.js @@ -134,9 +134,9 @@ export class SelfOrder extends Reactive { // If a command line does not have a quantity greater than 0, we consider it deleted this.currentOrder.lines = this.currentOrder.lines.filter((o) => o.qty > 0); } - async confirmationPage(screen_mode, device) { + async confirmationPage(screen_mode, device, access_token = "") { this.router.navigate("confirmation", { - orderAccessToken: this.currentOrder.access_token, + orderAccessToken: access_token || this.currentOrder.access_token, screenMode: screen_mode, }); if (device === "kiosk") { @@ -165,8 +165,8 @@ export class SelfOrder extends Reactive { // if the amount is 0, we don't need to go to the payment page // this directive works for both mode each and meal if (order.amount_total === 0 && order.lines.length > 0) { - await this.sendDraftOrderToServer(); - this.confirmationPage("order", device); + const order = await this.sendDraftOrderToServer(); + this.confirmationPage("order", device, order.access_token); return; } @@ -195,13 +195,7 @@ export class SelfOrder extends Reactive { } get currentOrder() { - if ( - this.editedOrder && - (this.editedOrder.state === "draft" || - (this.editedOrder.state === "paid" && - this.editedOrder.amount_total === 0 && - this.config.self_ordering_mode === "kiosk")) - ) { + if (this.editedOrder && this.editedOrder.state === "draft") { return this.editedOrder; } const existingOrder = this.orders.find( @@ -444,7 +438,7 @@ export class SelfOrder extends Reactive { this.updateOrdersFromServer([order], [order.access_token]); this.editedOrder.updateLastChanges(); - if (this.config.self_ordering_pay_after === "each") { + if (this.config.self_ordering_pay_after === "each" && order.amount_total > 0) { this.editedOrder = null; } @@ -531,7 +525,10 @@ export class SelfOrder extends Reactive { this.notification.add(message, { type: "success", }); - this.router.navigate("default"); + + if (this.router.activeSlot !== "confirmation") { + this.router.navigate("default"); + } } updateOrderFromServer(order) {