summaryrefslogtreecommitdiff
path: root/addons/pos_restaurant/static/tests/tours/TipScreen.tour.js
diff options
context:
space:
mode:
Diffstat (limited to 'addons/pos_restaurant/static/tests/tours/TipScreen.tour.js')
-rw-r--r--addons/pos_restaurant/static/tests/tours/TipScreen.tour.js123
1 files changed, 123 insertions, 0 deletions
diff --git a/addons/pos_restaurant/static/tests/tours/TipScreen.tour.js b/addons/pos_restaurant/static/tests/tours/TipScreen.tour.js
new file mode 100644
index 00000000..430c7a2f
--- /dev/null
+++ b/addons/pos_restaurant/static/tests/tours/TipScreen.tour.js
@@ -0,0 +1,123 @@
+odoo.define('pos_restaurant.tour.TipScreen', function (require) {
+ 'use strict';
+
+ const { ProductScreen } = require('point_of_sale.tour.ProductScreenTourMethods');
+ const { PaymentScreen } = require('point_of_sale.tour.PaymentScreenTourMethods');
+ const { ReceiptScreen } = require('point_of_sale.tour.ReceiptScreenTourMethods');
+ const { FloorScreen } = require('pos_restaurant.tour.FloorScreenTourMethods');
+ const { TicketScreen } = require('point_of_sale.tour.TicketScreenTourMethods');
+ const { TipScreen } = require('pos_restaurant.tour.TipScreenTourMethods');
+ const { NumberPopup } = require('point_of_sale.tour.NumberPopupTourMethods');
+ const { Chrome } = require('pos_restaurant.tour.ChromeTourMethods');
+ const { getSteps, startSteps } = require('point_of_sale.tour.utils');
+ var Tour = require('web_tour.tour');
+
+ startSteps();
+
+ // Create order that is synced when draft.
+ // order 1
+ FloorScreen.do.clickTable('T2');
+ ProductScreen.exec.addOrderline('Minute Maid', '1', '2');
+ ProductScreen.check.totalAmountIs('2.0');
+ Chrome.do.backToFloor();
+ FloorScreen.check.orderCountSyncedInTableIs('T2', '1');
+ FloorScreen.do.clickTable('T2');
+ ProductScreen.check.totalAmountIs('2.0');
+ ProductScreen.do.clickPayButton();
+ PaymentScreen.do.clickPaymentMethod('Bank');
+ PaymentScreen.do.clickValidate();
+ TipScreen.check.isShown();
+ Chrome.do.clickTicketButton();
+ TicketScreen.do.clickNewTicket();
+ // order 2
+ ProductScreen.exec.addOrderline('Coca-Cola', '2', '2');
+ ProductScreen.check.totalAmountIs('4.0');
+ Chrome.do.backToFloor();
+ FloorScreen.check.orderCountSyncedInTableIs('T2', '1');
+ Chrome.do.clickTicketButton();
+ TicketScreen.check.nthRowContains('2', 'Tipping');
+ TicketScreen.do.clickDiscard();
+
+ // Create without syncing the draft.
+ // order 3
+ FloorScreen.do.clickTable('T5');
+ ProductScreen.exec.addOrderline('Minute Maid', '3', '2');
+ ProductScreen.check.totalAmountIs('6.0');
+ ProductScreen.do.clickPayButton();
+ PaymentScreen.do.clickPaymentMethod('Bank');
+ PaymentScreen.do.clickValidate();
+ TipScreen.check.isShown();
+ Chrome.do.clickTicketButton();
+ TicketScreen.do.clickNewTicket();
+ // order 4
+ ProductScreen.exec.addOrderline('Coca-Cola', '4', '2');
+ ProductScreen.check.totalAmountIs('8.0');
+ Chrome.do.backToFloor();
+ FloorScreen.check.orderCountSyncedInTableIs('T5', '1');
+ Chrome.do.clickTicketButton();
+ TicketScreen.check.nthRowContains('4', 'Tipping');
+
+ // Tip 20% on order1
+ TicketScreen.do.selectOrder('-0001');
+ TipScreen.check.isShown();
+ TipScreen.check.totalAmountIs('2.0');
+ TipScreen.check.percentAmountIs('15%', '0.30');
+ TipScreen.check.percentAmountIs('20%', '0.40');
+ TipScreen.check.percentAmountIs('25%', '0.50');
+ TipScreen.do.clickPercentTip('20%');
+ TipScreen.check.inputAmountIs('0.40')
+ Chrome.do.backToFloor();
+ FloorScreen.check.isShown();
+ Chrome.do.clickTicketButton();
+
+ // Tip 25% on order3
+ TicketScreen.do.selectOrder('-0003');
+ TipScreen.check.isShown();
+ TipScreen.check.totalAmountIs('6.0');
+ TipScreen.check.percentAmountIs('15%', '0.90');
+ TipScreen.check.percentAmountIs('20%', '1.20');
+ TipScreen.check.percentAmountIs('25%', '1.50');
+ TipScreen.do.clickPercentTip('25%');
+ TipScreen.check.inputAmountIs('1.50');
+ Chrome.do.backToFloor();
+ FloorScreen.check.isShown();
+ Chrome.do.clickTicketButton();
+
+ // finalize order 4 then tip custom amount
+ TicketScreen.do.selectOrder('-0004');
+ ProductScreen.check.totalAmountIs('8.0');
+ ProductScreen.do.clickPayButton();
+ PaymentScreen.do.clickPaymentMethod('Bank');
+ PaymentScreen.do.clickValidate();
+ TipScreen.check.isShown();
+ TipScreen.check.totalAmountIs('8.0');
+ TipScreen.check.percentAmountIs('15%', '1.20');
+ TipScreen.check.percentAmountIs('20%', '1.60');
+ TipScreen.check.percentAmountIs('25%', '2.00');
+ TipScreen.do.setCustomTip('1.00');
+ TipScreen.check.inputAmountIs('1.00')
+ Chrome.do.backToFloor();
+ FloorScreen.check.isShown();
+
+ // settle tips here
+ Chrome.do.clickTicketButton();
+ TicketScreen.do.selectFilter('Tipping');
+ TicketScreen.do.settleTips();
+ TicketScreen.do.selectFilter('All Tickets');
+ TicketScreen.check.nthRowContains(2, 'Ongoing');
+
+ // tip order2 during payment
+ // tip screen should not show after validating payment screen
+ TicketScreen.do.selectOrder('-0002');
+ ProductScreen.do.clickPayButton();
+ PaymentScreen.do.clickTipButton();
+ NumberPopup.check.isShown();
+ NumberPopup.do.pressNumpad('1');
+ NumberPopup.check.inputShownIs('1');
+ NumberPopup.do.clickConfirm();
+ PaymentScreen.do.clickPaymentMethod('Cash');
+ PaymentScreen.do.clickValidate();
+ ReceiptScreen.check.isShown();
+
+ Tour.register('PosResTipScreenTour', { test: true, url: '/pos/ui' }, getSteps());
+});