mirror of
https://github.com/bringout/oca-ocb-sale.git
synced 2026-04-27 01:52:02 +02:00
Initial commit: Sale packages
This commit is contained in:
commit
14e3d26998
6469 changed files with 2479670 additions and 0 deletions
|
|
@ -0,0 +1,84 @@
|
|||
odoo.define('pos_sale.tour.ProductScreenTourMethods', function (require) {
|
||||
'use strict';
|
||||
|
||||
const { createTourMethods } = require('point_of_sale.tour.utils');
|
||||
const { Do, Check, Execute } = require('point_of_sale.tour.ProductScreenTourMethods');
|
||||
|
||||
class DoExt extends Do {
|
||||
clickQuotationButton() {
|
||||
return [
|
||||
{
|
||||
content: 'click quotation button',
|
||||
trigger: '.o_sale_order_button',
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
selectFirstOrder() {
|
||||
return [
|
||||
{
|
||||
content: `select order`,
|
||||
trigger: `.order-row .col.name:first`,
|
||||
},
|
||||
{
|
||||
content: `click on select the order`,
|
||||
trigger: `.selection-item:contains('Settle the order')`,
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
selectNthOrder(n) {
|
||||
return [
|
||||
{
|
||||
content: `select order`,
|
||||
trigger: `.order-list .order-row:nth-child(${n})`,
|
||||
},
|
||||
{
|
||||
content: `click on select the order`,
|
||||
trigger: `.selection-item:contains('Settle the order')`,
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
downPaymentFirstOrder() {
|
||||
return [
|
||||
{
|
||||
content: `select order`,
|
||||
trigger: `.order-row .col.name:first`,
|
||||
},
|
||||
{
|
||||
content: `click on select the order`,
|
||||
trigger: `.selection-item:contains('Apply a down payment')`,
|
||||
},
|
||||
{
|
||||
content: `click on +10 button`,
|
||||
trigger: `.mode-button.add:contains('+10')`,
|
||||
},
|
||||
{
|
||||
content: `click on ok button`,
|
||||
trigger: `.button.confirm`,
|
||||
}
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
class CheckExt extends Check{
|
||||
checkCustomerNotes(note) {
|
||||
return [
|
||||
{
|
||||
content: `check customer notes`,
|
||||
trigger: `.orderline-note:contains(${note})`,
|
||||
}
|
||||
];
|
||||
}
|
||||
checkOrdersListEmpty() {
|
||||
return [
|
||||
{
|
||||
content: 'Check that the orders list is empty',
|
||||
trigger: '.order-list:not(:has(.order-row))',
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
return createTourMethods('ProductScreen', DoExt, CheckExt, Execute);
|
||||
});
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
odoo.define('pos_sale.tour.ReceiptScreenTourMethods', function (require) {
|
||||
'use strict';
|
||||
|
||||
const { createTourMethods } = require('point_of_sale.tour.utils');
|
||||
const { Do, Check, Execute } = require('point_of_sale.tour.ReceiptScreenTourMethods');
|
||||
|
||||
class CheckExt extends Check{
|
||||
checkCustomerNotes(note) {
|
||||
return [
|
||||
{
|
||||
content: `check customer notes`,
|
||||
trigger: `.pos-receipt-customer-note:contains(${note})`,
|
||||
}
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
return createTourMethods('ReceiptScreen', Do, CheckExt, Execute);
|
||||
});
|
||||
|
|
@ -0,0 +1,201 @@
|
|||
odoo.define('pos_sale.tour', function (require) {
|
||||
'use strict';
|
||||
|
||||
const { Chrome } = require('point_of_sale.tour.ChromeTourMethods');
|
||||
const { PaymentScreen } = require('point_of_sale.tour.PaymentScreenTourMethods');
|
||||
const { ProductScreen } = require('pos_sale.tour.ProductScreenTourMethods');
|
||||
const { ReceiptScreen } = require('pos_sale.tour.ReceiptScreenTourMethods');
|
||||
const { TicketScreen } = require('point_of_sale.tour.TicketScreenTourMethods');
|
||||
const { getSteps, startSteps } = require('point_of_sale.tour.utils');
|
||||
const Tour = require('web_tour.tour');
|
||||
|
||||
// signal to start generating steps
|
||||
// when finished, steps can be taken from getSteps
|
||||
startSteps();
|
||||
|
||||
ProductScreen.do.confirmOpeningPopup();
|
||||
ProductScreen.do.clickQuotationButton();
|
||||
ProductScreen.do.selectFirstOrder();
|
||||
ProductScreen.check.selectedOrderlineHas('Pizza Chicken', 9);
|
||||
ProductScreen.do.pressNumpad('Qty 2'); // Change the quantity of the product to 2
|
||||
ProductScreen.check.selectedOrderlineHas('Pizza Chicken', 2);
|
||||
ProductScreen.do.clickPayButton();
|
||||
PaymentScreen.do.clickPaymentMethod('Bank');
|
||||
PaymentScreen.do.clickValidate();
|
||||
Chrome.do.clickTicketButton();
|
||||
|
||||
Tour.register('PosSettleOrder', { test: true, url: '/pos/ui' }, getSteps());
|
||||
|
||||
startSteps();
|
||||
|
||||
ProductScreen.do.confirmOpeningPopup();
|
||||
ProductScreen.do.clickQuotationButton();
|
||||
// The second item in the list is the first sale.order.
|
||||
ProductScreen.do.selectNthOrder(2);
|
||||
ProductScreen.check.selectedOrderlineHas('product1', 1);
|
||||
ProductScreen.check.totalAmountIs("10.00");
|
||||
|
||||
ProductScreen.do.clickQuotationButton();
|
||||
// The first item in the list is the second sale.order.
|
||||
// Selecting the 2nd sale.order should use a new order,
|
||||
// therefore, the total amount will change.
|
||||
ProductScreen.do.selectNthOrder(1);
|
||||
ProductScreen.check.selectedOrderlineHas('product2', 1);
|
||||
ProductScreen.check.totalAmountIs("11.00");
|
||||
|
||||
Tour.register('PosSettleOrderIncompatiblePartner', { test: true, url: '/pos/ui' }, getSteps());
|
||||
|
||||
startSteps();
|
||||
|
||||
ProductScreen.do.confirmOpeningPopup();
|
||||
ProductScreen.do.clickQuotationButton();
|
||||
ProductScreen.do.selectFirstOrder();
|
||||
ProductScreen.do.clickOrderline('[A001] Product A', '1');
|
||||
ProductScreen.check.selectedOrderlineHas('[A001] Product A', '1.00');
|
||||
ProductScreen.do.clickOrderline('[A002] Product B', '1');
|
||||
ProductScreen.do.pressNumpad('Qty 0');
|
||||
ProductScreen.check.selectedOrderlineHas('[A002] Product B', '0.00');
|
||||
ProductScreen.do.clickPayButton();
|
||||
PaymentScreen.do.clickPaymentMethod('Bank');
|
||||
PaymentScreen.check.remainingIs('0.0');
|
||||
PaymentScreen.do.clickValidate();
|
||||
ReceiptScreen.check.isShown();
|
||||
|
||||
Tour.register('PosSettleOrder2', { test: true, url: '/pos/ui' }, getSteps());
|
||||
|
||||
startSteps();
|
||||
|
||||
ProductScreen.do.confirmOpeningPopup();
|
||||
ProductScreen.do.clickQuotationButton();
|
||||
ProductScreen.do.selectFirstOrder();
|
||||
ProductScreen.do.clickOrderline("Product A", "1");
|
||||
ProductScreen.check.selectedOrderlineHas('Product A', '1.00');
|
||||
ProductScreen.do.clickPayButton();
|
||||
PaymentScreen.do.clickPaymentMethod('Bank');
|
||||
PaymentScreen.check.remainingIs('0.0');
|
||||
PaymentScreen.do.clickValidate();
|
||||
ReceiptScreen.check.isShown();
|
||||
|
||||
Tour.register('PosSettleOrder3', { test: true, url: '/pos/ui' }, getSteps());
|
||||
|
||||
startSteps();
|
||||
|
||||
ProductScreen.do.confirmOpeningPopup();
|
||||
ProductScreen.do.clickQuotationButton();
|
||||
ProductScreen.do.selectFirstOrder();
|
||||
ProductScreen.check.totalAmountIs(40);
|
||||
ProductScreen.do.clickPayButton();
|
||||
PaymentScreen.do.clickPaymentMethod('Bank');
|
||||
PaymentScreen.do.clickValidate();
|
||||
Chrome.do.clickTicketButton();
|
||||
|
||||
Tour.register('PosSettleOrderRealTime', { test: true, url: '/pos/ui' }, getSteps());
|
||||
|
||||
startSteps();
|
||||
|
||||
ProductScreen.do.clickQuotationButton();
|
||||
ProductScreen.do.downPaymentFirstOrder();
|
||||
ProductScreen.do.clickPayButton();
|
||||
PaymentScreen.do.clickPaymentMethod('Cash');
|
||||
PaymentScreen.do.clickValidate();
|
||||
ReceiptScreen.do.clickNextOrder();
|
||||
ProductScreen.do.clickRefund();
|
||||
// Filter should be automatically 'Paid'.
|
||||
TicketScreen.check.filterIs('Paid');
|
||||
TicketScreen.do.selectOrder('-0001');
|
||||
TicketScreen.do.clickOrderline('Down Payment');
|
||||
TicketScreen.do.pressNumpad('1');
|
||||
TicketScreen.do.confirmRefund();
|
||||
ProductScreen.do.clickPayButton();
|
||||
PaymentScreen.do.clickPaymentMethod('Cash');
|
||||
PaymentScreen.do.clickValidate();
|
||||
ReceiptScreen.do.clickNextOrder();
|
||||
|
||||
Tour.register('PosRefundDownpayment', { test: true, url: '/pos/ui' }, getSteps());
|
||||
|
||||
startSteps();
|
||||
|
||||
ProductScreen.do.confirmOpeningPopup();
|
||||
ProductScreen.do.clickQuotationButton();
|
||||
ProductScreen.do.selectFirstOrder();
|
||||
ProductScreen.check.totalAmountIs(28.98); // 3.5 * 8 * 1.15 * 90%
|
||||
ProductScreen.do.clickOrderline("Product A", '0.5');
|
||||
ProductScreen.check.checkOrderlinesNumber(4);
|
||||
ProductScreen.check.selectedOrderlineHas('Product A', '0.5', '4.14');
|
||||
|
||||
Tour.register('PosSettleOrderNotGroupable', { test: true, url: '/pos/ui' }, getSteps());
|
||||
|
||||
startSteps();
|
||||
|
||||
ProductScreen.do.clickQuotationButton();
|
||||
ProductScreen.do.selectFirstOrder();
|
||||
ProductScreen.check.checkCustomerNotes("Customer note 2--Customer note 3");
|
||||
ProductScreen.do.clickPayButton();
|
||||
PaymentScreen.do.clickPaymentMethod('Bank');
|
||||
PaymentScreen.do.clickValidate();
|
||||
ReceiptScreen.check.checkCustomerNotes("Customer note 2--Customer note 3");
|
||||
ReceiptScreen.do.clickNextOrder();
|
||||
|
||||
Tour.register('PosSettleOrderWithNote', { test: true, url: '/pos/ui' }, getSteps());
|
||||
|
||||
startSteps();
|
||||
|
||||
ProductScreen.do.clickQuotationButton();
|
||||
ProductScreen.do.selectFirstOrder();
|
||||
ProductScreen.do.clickPayButton();
|
||||
PaymentScreen.do.clickPaymentMethod('Bank');
|
||||
PaymentScreen.do.clickValidate();
|
||||
ReceiptScreen.do.clickNextOrder();
|
||||
ProductScreen.do.clickQuotationButton();
|
||||
ProductScreen.check.checkOrdersListEmpty();
|
||||
|
||||
Tour.register('PosOrderDoesNotRemainInList', { test: true, url: '/pos/ui' }, getSteps());
|
||||
|
||||
startSteps();
|
||||
|
||||
ProductScreen.do.confirmOpeningPopup();
|
||||
ProductScreen.do.clickQuotationButton();
|
||||
ProductScreen.do.selectFirstOrder();
|
||||
ProductScreen.check.selectedOrderlineHas('product_a', '1', '100');
|
||||
ProductScreen.do.clickPartnerButton();
|
||||
ProductScreen.do.clickCustomer('partner_a');
|
||||
ProductScreen.check.selectedOrderlineHas('product_a', '1', '100');
|
||||
|
||||
Tour.register('PosSettleCustomPrice', { test: true, url: '/pos/ui' }, getSteps());
|
||||
|
||||
startSteps();
|
||||
|
||||
ProductScreen.do.confirmOpeningPopup();
|
||||
ProductScreen.do.clickQuotationButton();
|
||||
ProductScreen.do.selectFirstOrder();
|
||||
ProductScreen.check.selectedOrderlineHas('Test service product', '1.00', '50.00');
|
||||
|
||||
Tour.register('PosSettleDraftOrder', { test: true, url: '/pos/ui' }, getSteps());
|
||||
|
||||
startSteps();
|
||||
|
||||
ProductScreen.do.confirmOpeningPopup();
|
||||
ProductScreen.do.clickQuotationButton();
|
||||
ProductScreen.do.selectFirstOrder();
|
||||
ProductScreen.do.clickPayButton();
|
||||
PaymentScreen.do.clickShipLaterButton()
|
||||
PaymentScreen.do.clickPaymentMethod('Bank');
|
||||
PaymentScreen.check.remainingIs('0.0');
|
||||
PaymentScreen.do.clickValidate();
|
||||
ReceiptScreen.check.isShown();
|
||||
|
||||
Tour.register('PosSettleOrderShipLater', { test: true, url: '/pos/ui' }, getSteps());
|
||||
|
||||
startSteps();
|
||||
|
||||
ProductScreen.do.confirmOpeningPopup();
|
||||
ProductScreen.do.clickQuotationButton();
|
||||
ProductScreen.do.downPaymentFirstOrder();
|
||||
ProductScreen.check.selectedOrderlineHas('Down Payment', '1', '10.00');
|
||||
ProductScreen.do.clickPayButton();
|
||||
PaymentScreen.do.clickPaymentMethod('Cash');
|
||||
PaymentScreen.do.clickValidate();
|
||||
ReceiptScreen.do.clickNextOrder();
|
||||
|
||||
Tour.register('PoSDownPaymentAmount', { test: true, url: '/pos/ui' }, getSteps());
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue