diff --git a/addons/pos_restaurant/static/src/js/Screens/TicketScreen.js b/addons/pos_restaurant/static/src/js/Screens/TicketScreen.js index f71d6fb73c1a293860ba83df1a4bf0ce07ee6fcf..6a4c1f3bc9919ab0fd032cbbcdea339455ad9b43 100644 --- a/addons/pos_restaurant/static/src/js/Screens/TicketScreen.js +++ b/addons/pos_restaurant/static/src/js/Screens/TicketScreen.js @@ -149,7 +149,7 @@ odoo.define('pos_restaurant.TicketScreen', function (require) { return result; } async _onDoRefund() { - if(this.env.pos.config.iface_floorplan) { + if(this.env.pos.config.iface_floorplan && !this.env.pos.table) { this.env.pos.setTable(this.getSelectedSyncedOrder().table ? this.getSelectedSyncedOrder().table : Object.values(this.env.pos.tables_by_id)[0]); } super._onDoRefund(); diff --git a/addons/pos_restaurant/static/tests/tours/refund.tour.js b/addons/pos_restaurant/static/tests/tours/refund.tour.js new file mode 100644 index 0000000000000000000000000000000000000000..bf7a80f2ec69327ef68a3fd234dc9648db31c637 --- /dev/null +++ b/addons/pos_restaurant/static/tests/tours/refund.tour.js @@ -0,0 +1,45 @@ +odoo.define('pos_restaurant.tour.Refund', function (require) { + 'use strict'; + + const { PaymentScreen } = require('point_of_sale.tour.PaymentScreenTourMethods'); + const { FloorScreen } = require('pos_restaurant.tour.FloorScreenTourMethods'); + const { ProductScreen } = require('pos_restaurant.tour.ProductScreenTourMethods'); + const { TicketScreen } = require('point_of_sale.tour.TicketScreenTourMethods'); + const { ReceiptScreen } = require('point_of_sale.tour.ReceiptScreenTourMethods'); + const { getSteps, startSteps } = require('point_of_sale.tour.utils'); + var Tour = require('web_tour.tour'); + + // signal to start generating steps + // when finished, steps can be taken from getSteps + startSteps(); + + // Create first order and pay it + FloorScreen.do.clickTable("T2"); + ProductScreen.do.confirmOpeningPopup(); + ProductScreen.do.clickDisplayedProduct("Coca-Cola"); + ProductScreen.check.selectedOrderlineHas("Coca-Cola"); + ProductScreen.do.clickDisplayedProduct("Coca-Cola"); + ProductScreen.check.selectedOrderlineHas("Coca-Cola"); + ProductScreen.do.clickDisplayedProduct("Water"); + ProductScreen.check.selectedOrderlineHas("Water"); + ProductScreen.check.totalAmountIs("6.60"); + ProductScreen.do.clickPayButton(); + PaymentScreen.do.clickPaymentMethod("Cash"); + PaymentScreen.do.clickValidate(); + ReceiptScreen.do.clickNextOrder(); + + // Go to another table and refund one of the product + FloorScreen.do.clickTable("T4"); + ProductScreen.check.orderIsEmpty(); + ProductScreen.do.clickRefund(); + TicketScreen.do.selectOrder("-0001"); + TicketScreen.do.clickOrderline("Coca-Cola"); + TicketScreen.do.pressNumpad("2"); + TicketScreen.check.toRefundTextContains("To Refund: 2.00"); + TicketScreen.do.confirmRefund(); + ProductScreen.check.isShown(); + ProductScreen.check.selectedOrderlineHas("Coca-Cola"); + ProductScreen.check.totalAmountIs("-4.40"); + + Tour.register('RefundStayCurrentTableTour', { test: true, url: '/pos/ui' }, getSteps()); +}); diff --git a/addons/pos_restaurant/tests/test_frontend.py b/addons/pos_restaurant/tests/test_frontend.py index 1eafca88f04f06881fd68cad892b87268fb645b7..a1f95cda64920c0105c7787460da1e65834f906f 100644 --- a/addons/pos_restaurant/tests/test_frontend.py +++ b/addons/pos_restaurant/tests/test_frontend.py @@ -208,3 +208,7 @@ class TestFrontend(odoo.tests.HttpCase): def test_06_split_bill_screen(self): self.pos_config.with_user(self.env.ref('base.user_admin')).open_ui() self.start_tour("/pos/ui?config_id=%d" % self.pos_config.id, 'SplitBillScreenTour2', login="admin") + + def test_07_refund_stay_current_table(self): + self.pos_config.with_user(self.env.ref('base.user_admin')).open_ui() + self.start_tour("/pos/ui?config_id=%d" % self.pos_config.id, 'RefundStayCurrentTableTour', login="admin")