mirror of
https://github.com/bringout/oca-ocb-pos.git
synced 2026-04-24 04:42:03 +02:00
252 lines
11 KiB
JavaScript
252 lines
11 KiB
JavaScript
/** @odoo-module **/
|
|
|
|
import { PosLoyalty } from 'pos_loyalty.tour.PosCouponTourMethods';
|
|
import { ProductScreen } from 'point_of_sale.tour.ProductScreenTourMethods';
|
|
import { SelectionPopup } from 'point_of_sale.tour.SelectionPopupTourMethods';
|
|
import { getSteps, startSteps } from 'point_of_sale.tour.utils';
|
|
import Tour from 'web_tour.tour';
|
|
|
|
startSteps();
|
|
|
|
ProductScreen.do.confirmOpeningPopup();
|
|
ProductScreen.do.clickHomeCategory();
|
|
|
|
ProductScreen.exec.addOrderline('Desk Organizer', '2');
|
|
|
|
// At this point, the free_product program is triggered.
|
|
// The reward button should be highlighted.
|
|
PosLoyalty.check.isRewardButtonHighlighted(true);
|
|
// Since the reward button is highlighted, clicking the reward product should be added as reward.
|
|
ProductScreen.do.clickDisplayedProduct('Desk Organizer');
|
|
ProductScreen.check.selectedOrderlineHas('Desk Organizer', '3.00');
|
|
PosLoyalty.check.hasRewardLine('Free Product - Desk Organizer', '-5.10', '1.00');
|
|
// In the succeeding 2 clicks on the product, it is considered as a regular product.
|
|
// In the third click, the product will be added as reward.
|
|
ProductScreen.do.clickDisplayedProduct('Desk Organizer');
|
|
ProductScreen.do.clickDisplayedProduct('Desk Organizer');
|
|
PosLoyalty.check.isRewardButtonHighlighted(true);
|
|
ProductScreen.do.clickDisplayedProduct('Desk Organizer');
|
|
ProductScreen.check.selectedOrderlineHas('Desk Organizer', '6.00');
|
|
PosLoyalty.check.hasRewardLine('Free Product - Desk Organizer', '-10.20', '2.00');
|
|
|
|
|
|
ProductScreen.do.clickDisplayedProduct('Desk Organizer');
|
|
PosLoyalty.check.isRewardButtonHighlighted(false);
|
|
PosLoyalty.check.orderTotalIs('25.50');
|
|
// Finalize order that consumed a reward.
|
|
PosLoyalty.exec.finalizeOrder('Cash');
|
|
|
|
ProductScreen.do.clickDisplayedProduct('Desk Organizer');
|
|
ProductScreen.check.selectedOrderlineHas('Desk Organizer', '1.00');
|
|
ProductScreen.do.clickDisplayedProduct('Desk Organizer');
|
|
ProductScreen.check.selectedOrderlineHas('Desk Organizer', '2.00');
|
|
ProductScreen.do.clickDisplayedProduct('Desk Organizer');
|
|
PosLoyalty.check.hasRewardLine('Free Product - Desk Organizer', '-5.10', '1.00');
|
|
ProductScreen.do.pressNumpad('Backspace');
|
|
ProductScreen.check.selectedOrderlineHas('Desk Organizer', '0.00');
|
|
ProductScreen.do.clickDisplayedProduct('Desk Organizer');
|
|
ProductScreen.check.selectedOrderlineHas('Desk Organizer', '1.00');
|
|
ProductScreen.do.clickDisplayedProduct('Desk Organizer');
|
|
ProductScreen.check.selectedOrderlineHas('Desk Organizer', '2.00');
|
|
PosLoyalty.check.isRewardButtonHighlighted(true);
|
|
// Finalize order but without the reward.
|
|
// This step is important. When syncing the order, no reward should be synced.
|
|
PosLoyalty.check.orderTotalIs('10.20');
|
|
PosLoyalty.exec.finalizeOrder('Cash');
|
|
|
|
|
|
ProductScreen.exec.addOrderline('Magnetic Board', '2');
|
|
PosLoyalty.check.isRewardButtonHighlighted(false);
|
|
ProductScreen.do.clickDisplayedProduct('Magnetic Board');
|
|
PosLoyalty.check.isRewardButtonHighlighted(true);
|
|
ProductScreen.do.clickDisplayedProduct('Whiteboard Pen');
|
|
PosLoyalty.check.isRewardButtonHighlighted(false);
|
|
PosLoyalty.check.hasRewardLine('Free Product - Whiteboard Pen', '-3.20', '1.00');
|
|
ProductScreen.do.clickOrderline('Magnetic Board', '3.00');
|
|
ProductScreen.check.selectedOrderlineHas('Magnetic Board', '3.00');
|
|
ProductScreen.do.pressNumpad('6');
|
|
ProductScreen.check.selectedOrderlineHas('Magnetic Board', '6.00');
|
|
PosLoyalty.check.isRewardButtonHighlighted(true);
|
|
PosLoyalty.do.clickRewardButton();
|
|
PosLoyalty.check.isRewardButtonHighlighted(false);
|
|
PosLoyalty.check.hasRewardLine('Free Product - Whiteboard Pen', '-6.40', '2.00');
|
|
// Finalize order that consumed a reward.
|
|
PosLoyalty.check.orderTotalIs('11.88');
|
|
PosLoyalty.exec.finalizeOrder('Cash');
|
|
|
|
ProductScreen.exec.addOrderline('Magnetic Board', '6');
|
|
ProductScreen.do.clickDisplayedProduct('Whiteboard Pen');
|
|
PosLoyalty.check.hasRewardLine('Free Product - Whiteboard Pen', '-3.20', '1.00');
|
|
PosLoyalty.check.isRewardButtonHighlighted(true);
|
|
|
|
ProductScreen.do.clickOrderline('Magnetic Board', '6.00');
|
|
ProductScreen.do.pressNumpad('Backspace');
|
|
// At this point, the reward should have been removed.
|
|
PosLoyalty.check.isRewardButtonHighlighted(false);
|
|
ProductScreen.check.selectedOrderlineHas('Magnetic Board', '0.00');
|
|
ProductScreen.do.clickDisplayedProduct('Magnetic Board');
|
|
ProductScreen.check.selectedOrderlineHas('Magnetic Board', '1.00');
|
|
ProductScreen.do.clickDisplayedProduct('Magnetic Board');
|
|
ProductScreen.check.selectedOrderlineHas('Magnetic Board', '2.00');
|
|
ProductScreen.do.clickDisplayedProduct('Magnetic Board');
|
|
ProductScreen.check.selectedOrderlineHas('Magnetic Board', '3.00');
|
|
PosLoyalty.check.hasRewardLine('Free Product - Whiteboard Pen', '-3.20', '1.00');
|
|
PosLoyalty.check.isRewardButtonHighlighted(false);
|
|
|
|
PosLoyalty.check.orderTotalIs('5.94');
|
|
PosLoyalty.exec.finalizeOrder('Cash');
|
|
|
|
// Promotion: 2 items of shelves, get desk_pad/monitor_stand free
|
|
// This is the 5th order.
|
|
ProductScreen.do.clickDisplayedProduct('Wall Shelf Unit');
|
|
ProductScreen.check.selectedOrderlineHas('Wall Shelf Unit', '1.00');
|
|
PosLoyalty.check.isRewardButtonHighlighted(false);
|
|
ProductScreen.do.clickDisplayedProduct('Small Shelf');
|
|
ProductScreen.check.selectedOrderlineHas('Small Shelf', '1.00');
|
|
PosLoyalty.check.isRewardButtonHighlighted(true);
|
|
// Click reward product. Should be automatically added as reward.
|
|
ProductScreen.do.clickDisplayedProduct('Desk Pad');
|
|
PosLoyalty.check.isRewardButtonHighlighted(false);
|
|
PosLoyalty.check.hasRewardLine('Free Product', '-1.98', '1.00');
|
|
// Remove the reward line. The next steps will check if cashier
|
|
// can select from the different reward products.
|
|
ProductScreen.do.pressNumpad('Backspace');
|
|
ProductScreen.do.pressNumpad('Backspace');
|
|
PosLoyalty.check.isRewardButtonHighlighted(true);
|
|
PosLoyalty.do.clickRewardButton();
|
|
SelectionPopup.check.hasSelectionItem('Monitor Stand');
|
|
SelectionPopup.check.hasSelectionItem('Desk Pad');
|
|
SelectionPopup.do.clickItem('Desk Pad');
|
|
PosLoyalty.check.isRewardButtonHighlighted(false);
|
|
PosLoyalty.check.hasRewardLine('Free Product', '-1.98', '1.00');
|
|
ProductScreen.do.pressNumpad('Backspace');
|
|
ProductScreen.do.pressNumpad('Backspace');
|
|
PosLoyalty.check.isRewardButtonHighlighted(true);
|
|
PosLoyalty.do.claimReward('Monitor Stand');
|
|
PosLoyalty.check.isRewardButtonHighlighted(false);
|
|
ProductScreen.check.selectedOrderlineHas('Monitor Stand', '1.00', '3.19');
|
|
PosLoyalty.check.hasRewardLine('Free Product', '-3.19', '1.00');
|
|
PosLoyalty.check.orderTotalIs('4.81');
|
|
PosLoyalty.exec.finalizeOrder('Cash');
|
|
|
|
Tour.register('PosLoyaltyFreeProductTour', { test: true, url: '/pos/web' }, getSteps());
|
|
|
|
startSteps();
|
|
|
|
ProductScreen.do.confirmOpeningPopup();
|
|
ProductScreen.do.clickHomeCategory();
|
|
|
|
ProductScreen.do.clickPartnerButton();
|
|
ProductScreen.do.clickCustomer('AAA Partner');
|
|
ProductScreen.exec.addOrderline('Test Product A', '1');
|
|
PosLoyalty.check.isRewardButtonHighlighted(true);
|
|
PosLoyalty.do.clickRewardButton();
|
|
PosLoyalty.check.hasRewardLine('Free Product - Test Product A', '-11.50', '1.00');
|
|
|
|
Tour.register('PosLoyaltyFreeProductTour2', { test: true, url: '/pos/web' }, getSteps());
|
|
|
|
startSteps();
|
|
|
|
ProductScreen.do.confirmOpeningPopup();
|
|
ProductScreen.do.clickHomeCategory();
|
|
|
|
ProductScreen.do.clickDisplayedProduct('Test Product A');
|
|
ProductScreen.check.selectedOrderlineHas('Test Product A', '1.00', '40.00');
|
|
ProductScreen.do.clickDisplayedProduct('Test Product B');
|
|
ProductScreen.check.selectedOrderlineHas('Test Product B', '1.00', '40.00');
|
|
PosLoyalty.do.clickRewardButton();
|
|
SelectionPopup.do.clickItem("$ 10 per order on specific products");
|
|
PosLoyalty.check.hasRewardLine('$ 10 per order on specific products', '-10.00', '1.00');
|
|
PosLoyalty.check.orderTotalIs('70.00');
|
|
PosLoyalty.do.clickRewardButton();
|
|
SelectionPopup.do.clickItem("$ 10 per order on specific products");
|
|
PosLoyalty.check.orderTotalIs('60.00');
|
|
PosLoyalty.do.clickRewardButton();
|
|
SelectionPopup.do.clickItem("$ 30 per order on specific products");
|
|
PosLoyalty.check.hasRewardLine('$ 30 per order on specific products', '-30.00', '1.00');
|
|
PosLoyalty.check.orderTotalIs('30.00');
|
|
|
|
Tour.register('PosLoyaltySpecificDiscountTour', { test: true, url: '/pos/web' }, getSteps());
|
|
|
|
startSteps();
|
|
|
|
ProductScreen.do.confirmOpeningPopup();
|
|
ProductScreen.do.clickHomeCategory();
|
|
|
|
ProductScreen.do.clickDisplayedProduct('Test Product A');
|
|
ProductScreen.do.clickDisplayedProduct('Test Product C');
|
|
PosLoyalty.check.orderTotalIs('130.00');
|
|
PosLoyalty.check.isRewardButtonHighlighted(true);
|
|
PosLoyalty.do.clickRewardButton();
|
|
PosLoyalty.check.orderTotalIs('130.00');
|
|
|
|
Tour.register('PosLoyaltySpecificDiscountWithFreeProductTour', { test: true, url: '/pos/web' }, getSteps());
|
|
|
|
startSteps();
|
|
|
|
ProductScreen.do.confirmOpeningPopup();
|
|
ProductScreen.do.clickHomeCategory();
|
|
|
|
ProductScreen.do.clickDisplayedProduct('Product A');
|
|
ProductScreen.check.selectedOrderlineHas('Product A', '1.00', '15.00');
|
|
PosLoyalty.check.orderTotalIs('15.00');
|
|
|
|
ProductScreen.do.clickDisplayedProduct('Product B');
|
|
ProductScreen.check.selectedOrderlineHas('Product B', '1.00', '50.00');
|
|
PosLoyalty.check.orderTotalIs('40.00');
|
|
|
|
Tour.register('PosLoyaltySpecificDiscountWithRewardProductDomainTour', { test: true, url: '/pos/web' }, getSteps());
|
|
|
|
startSteps();
|
|
|
|
ProductScreen.do.confirmOpeningPopup();
|
|
ProductScreen.do.clickHomeCategory();
|
|
|
|
ProductScreen.do.clickDisplayedProduct('Product A');
|
|
ProductScreen.check.selectedOrderlineHas('Product A', '1.00', '15.00');
|
|
PosLoyalty.check.orderTotalIs('15.00');
|
|
|
|
ProductScreen.do.clickDisplayedProduct('Product B');
|
|
ProductScreen.check.selectedOrderlineHas('Product B', '1.00', '50.00');
|
|
PosLoyalty.check.orderTotalIs('40.00');
|
|
|
|
Tour.register('PosLoyaltySpecificDiscountCategoryTour', { test: true, url: '/pos/web' }, getSteps());
|
|
|
|
startSteps();
|
|
ProductScreen.do.confirmOpeningPopup();
|
|
ProductScreen.do.clickHomeCategory();
|
|
|
|
ProductScreen.do.clickDisplayedProduct("Desk Organizer");
|
|
ProductScreen.do.clickDisplayedProduct("Desk Organizer");
|
|
PosLoyalty.check.isRewardButtonHighlighted(true);
|
|
PosLoyalty.do.clickRewardButton();
|
|
SelectionPopup.do.clickItem("product_a");
|
|
PosLoyalty.check.hasRewardLine("Free Product", "-2", "1.00");
|
|
PosLoyalty.check.isRewardButtonHighlighted(false);
|
|
|
|
ProductScreen.do.clickDisplayedProduct("Desk Organizer");
|
|
ProductScreen.do.clickDisplayedProduct("Desk Organizer");
|
|
PosLoyalty.check.isRewardButtonHighlighted(true);
|
|
PosLoyalty.do.clickRewardButton();
|
|
SelectionPopup.do.clickItem("product_b");
|
|
PosLoyalty.check.hasRewardLine("Free Product", "-5", "1.00");
|
|
PosLoyalty.check.isRewardButtonHighlighted(false);
|
|
|
|
ProductScreen.do.clickDisplayedProduct("Desk Organizer");
|
|
ProductScreen.do.clickDisplayedProduct("Desk Organizer");
|
|
PosLoyalty.check.isRewardButtonHighlighted(true);
|
|
PosLoyalty.do.clickRewardButton();
|
|
SelectionPopup.do.clickItem("product_b");
|
|
PosLoyalty.check.hasRewardLine("Free Product", "-10", "2.00");
|
|
PosLoyalty.check.isRewardButtonHighlighted(false);
|
|
|
|
Tour.register("PosLoyaltyRewardProductTag", { test: true, url: "/pos/web" }, getSteps());
|
|
|
|
startSteps();
|
|
ProductScreen.do.confirmOpeningPopup();
|
|
ProductScreen.do.clickHomeCategory();
|
|
ProductScreen.do.clickDisplayedProduct('Product A');
|
|
PosLoyalty.do.enterCode('563412');
|
|
PosLoyalty.check.hasRewardLine('10% on your order', '-1.50');
|
|
|
|
Tour.register("test_loyalty_on_order_with_fixed_tax", { test: true, url: "/pos/web" }, getSteps());
|