Project:
| View Issue Details[ Jump to Notes ] | [ Issue History ] [ Print ] | |||||||
| ID | ||||||||
| 0043880 | ||||||||
| Type | Category | Severity | Reproducibility | Date Submitted | Last Update | |||
| defect | [Retail Modules] Discounts by Total | major | always | 2020-04-27 13:41 | 2020-05-25 09:33 | |||
| Reporter | Leyre | View Status | public | |||||
| Assigned To | ranjith_qualiantech_com | |||||||
| Priority | urgent | Resolution | unable to reproduce | Fixed in Version | RR19Q4 | |||
| Status | closed | Fix in branch | Fixed in SCM revision | |||||
| Projection | none | ETA | none | Target Version | ||||
| OS | Any | Database | Any | Java version | ||||
| OS Version | Database version | Ant version | ||||||
| Product Version | SCM revision | |||||||
| Merge Request Status | ||||||||
| Review Assigned To | marvintm | |||||||
| OBNetwork customer | Gold | |||||||
| Support ticket | 15741 | |||||||
| Regression level | ||||||||
| Regression date | ||||||||
| Regression introduced in release | ||||||||
| Regression introduced by commit | ||||||||
| Triggers an Emergency Pack | No | |||||||
| Summary | 0043880: Using the old discount engine, the "by total" discount is not calculated correctly on the receipt lines | |||||||
| Description | Using the old discount engine, the "by total" discount is not calculated correctly on the receipt lines | |||||||
| Steps To Reproduce | Using the 20Q1 version, add the "Discount rules for Retail by total" module in the correct version: ** In our local instance: Web POS 1.2.6703 Discounts & Promotions Rules for Retail 1.3.6701 Discount rules for Retail by total 1.0.1300 Apply the patches related to the issues 43322 and 43521 (or confirm that the patches are applied) ** Backend: 1. Configure the preference "Web POS Use advanced discounts engine" = N 2. Create a new "User Defined Amount" discount 3. Create a new "Variable Discount per Total Amount" discount ** Web POS: 1. Add two products non grouped with price = 9.90 2. Add another product with price = 2.90 3. Add the first discount "User Defined Amount" = 1 4. Try to add the second discount "Variable Discount per Total Amount" = 10. Verify that the total discount/line is not applied correctly or proportionally on the products. --> ANOTHER EXAMPLE DETECTED: ** Web POS: 1. Add one product = 699.9 2. Add another product 399.9 3. Add the first discount "User Defined Amount" = -20 only to the first product. 4. Add the second discount "Variable Discount per Total Amount" = -100 The sum of the "by total" discount, of all the lines is not 100 | |||||||
| Tags | No tags attached. | |||||||
| Attached Files | # HG changeset patch
# User Ranjith S R <ranjith@qualiantech.com>
# Date 1589358087 -19800
# Wed May 13 13:51:27 2020 +0530
# Node ID 81eaca9f48fa85ee0ab598c5d68ce9fcedb85d94
# Parent 95a79c86bcff41cddf04bd0924f53a40415b7485
Related to issue 43880 : Discount should be calculated based on Total Receipt Amount
* Total Discount Amount will be calculated for the total receipt amount which excludes
manual promotions amount or any other promotions amount.
diff -r 95a79c86bcff -r 81eaca9f48fa web/org.openbravo.retail.discounts.bytotal/js/promotion-by-total-utils.js
--- a/web/org.openbravo.retail.discounts.bytotal/js/promotion-by-total-utils.js Tue May 05 11:00:47 2020 +0200
+++ b/web/org.openbravo.retail.discounts.bytotal/js/promotion-by-total-utils.js Wed May 13 13:51:27 2020 +0530
@@ -117,24 +117,32 @@
);
//Calculate the discounts applied to receipt, to update the total receipt
discountReceipt = preprocess.linesToCompute.reduce(function(memo, l) {
- var discount = 0,
- ruleApplied = _.find(l.line.get('promotions'), function(p) {
- return p.ruleId === ruleFromReceipt.get('rule').id;
- });
+ var discount = 0;
if (
- !l.line.get('splitline') &&
- OB.UTIL.isNullOrUndefined(ruleApplied)
+ l.line.get('promotions') &&
+ l.line.get('promotions').length > 0
) {
- discount =
- l.line.getDiscount() > 0
- ? l.line.getDiscount()
- : !OB.UTIL.isNullOrUndefined(
- l.line.get('manualPromotions')
- ) && l.line.get('manualPromotions').length > 0
- ? l.line.get('manualPromotions').reduce(function(memo, mp) {
- return OB.DEC.add(memo, mp.amt);
- }, 0)
- : 0;
+ l.line.get('promotions').forEach(function(prom) {
+ if (OB.UTIL.isNullOrUndefined(prom.amt)) {
+ return;
+ }
+ if (
+ prom.ruleId !== discountRule.get('id') &&
+ prom.rule.get('userAmt') !== discountRule.get('userAmt')
+ ) {
+ discount = OB.DEC.add(discount, prom.amt);
+ }
+ });
+ } else if (
+ l.line.get('manualPromotions') &&
+ l.line.get('manualPromotions').length > 0
+ ) {
+ l.line.get('manualPromotions').forEach(function(prom) {
+ if (OB.UTIL.isNullOrUndefined(prom.amt)) {
+ return;
+ }
+ discount = OB.DEC.add(discount, prom.amt);
+ });
}
return OB.DEC.add(memo, discount);
}, 0);
# HG changeset patch
# User Ranjith S R <ranjith@qualiantech.com>
# Date 1589358127 -19800
# Wed May 13 13:52:07 2020 +0530
# Node ID 0518edd6f88ca56c112956bc813c2ee6e23e8ec5
# Parent 25925187c340cd17b0e608123a7937645222746a
Verifies issue 43880 : Added Automated Test I43880_VerifyTotalDiscounts
diff -r 25925187c340 -r 0518edd6f88c src-test/org/openbravo/test/mobile/retail/extmodules/selenium/TestIdExtModules.java
--- a/src-test/org/openbravo/test/mobile/retail/extmodules/selenium/TestIdExtModules.java Mon May 11 11:35:51 2020 +0530
+++ b/src-test/org/openbravo/test/mobile/retail/extmodules/selenium/TestIdExtModules.java Wed May 13 13:52:07 2020 +0530
@@ -768,6 +768,8 @@
// Discount Category
public static TestIdConstructor BUTTON_DISCOUNTSCATEGORY_DISCOUNTSLIST = new TestIdConstructor(
"coreElementContainer_discountsList", EnyoKind.BUTTON); //
+ public static TestIdConstructor BUTTON_DISCOUNTSCATEGORY_SEARCHBOX = new TestIdConstructor(
+ "discatlistitemprinter_filterText"); //
public static TestIdConstructor BUTTON_DISCOUNTCATEGORY_SEARCH = new TestIdConstructor(
"discatlistitemprinter_button2", EnyoKind.BUTTON);
public static TestIdConstructor BUTTON_DISCOUNTCATEGORY_ROW1 = new TestIdConstructor(
diff -r 25925187c340 -r 0518edd6f88c src-test/org/openbravo/test/mobile/retail/extmodules/selenium/tests/discounts_bytotal/I43880_VerifyTotalDiscounts.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src-test/org/openbravo/test/mobile/retail/extmodules/selenium/tests/discounts_bytotal/I43880_VerifyTotalDiscounts.java Wed May 13 13:52:07 2020 +0530
@@ -0,0 +1,330 @@
+/*
+ *************************************************************************
+ * The contents of this file are subject to the Openbravo Public License
+ * Version 1.0 (the "License"), being the Mozilla Public License
+ * Version 1.1 with a permitted attribution clause; you may not use this
+ * file except in compliance with the License. You may obtain a copy of
+ * the License at http://www.openbravo.com/legal/license.html
+ * Software distributed under the License is distributed on an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ * License for the specific language governing rights and limitations
+ * under the License.
+ * The Original Code is Openbravo ERP.
+ * The Initial Developer of the Original Code is Openbravo S.L.U.
+ * All portions are Copyright (C) 2019 Openbravo S.L.U.
+ * All Rights Reserved.
+ * Contributor(s):
+ ************************************************************************
+ *
+ * @author RAN
+ *
+ */
+
+package org.openbravo.test.mobile.retail.extmodules.selenium.tests.discounts_bytotal;
+
+import org.junit.Test;
+import org.openbravo.test.mobile.retail.extmodules.selenium.TestIdExtModules;
+import org.openbravo.test.mobile.retail.extmodules.selenium.terminals.WebPOSExtModulesTerminalHelper;
+
+public class I43880_VerifyTotalDiscounts extends WebPOSExtModulesTerminalHelper {
+ final String PRODUCT_NAME_1 = "Basecamp lantern";
+ final String PRODUCT_NAME_2 = "Basecamp lantern with legs";
+ final String PRODUCT_NAME_3 = "Backpack ADP2 12l";
+ final String VAR_DISCOUNT_AMT_NAME = "disc_5_var_euro";
+ final String VAR_TOTALDISCOUNT_AMT_NAME = "Variable Amount Discount By Total";
+
+ @Test
+ public void test() {
+ tap(TestIdExtModules.BUTTON_SEARCH);
+ write(TestIdExtModules.FIELD_SEARCH_TEXT, PRODUCT_NAME_1);
+ tap(TestIdExtModules.BUTTON_SEARCH_EXECUTE);
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "55.50");
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_6);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_DOT);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "699.90");
+
+ tap(TestIdExtModules.BUTTON_SEARCH);
+ write(TestIdExtModules.FIELD_SEARCH_TEXT, PRODUCT_NAME_2);
+ tap(TestIdExtModules.BUTTON_SEARCH_EXECUTE);
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "731.80");
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW2);
+ tap(TestIdExtModules.BUTTON_KEYPAD_3);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_DOT);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "1,099.80");
+
+ // Add User defined Discount
+ getDiscount(VAR_DISCOUNT_AMT_NAME);
+ tap(TestIdExtModules.BUTTON_KEYPAD_2);
+ tap(TestIdExtModules.BUTTON_KEYPAD_0);
+ tap(TestIdExtModules.BUTTON_KEYPAD_ENTER);
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW1_CHECKBOX);
+ tap(TestIdExtModules.BUTTON_RECEIPTDISCOUNTS_APPLY);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "1,079.80");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTNAME, "-- " + VAR_DISCOUNT_AMT_NAME);
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTAMOUNT, "-20.00");
+
+ // Add Variable Discount per Total Amount
+ getDiscount(VAR_TOTALDISCOUNT_AMT_NAME);
+ tap(TestIdExtModules.BUTTON_KEYPAD_1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_0);
+ tap(TestIdExtModules.BUTTON_KEYPAD_0);
+ tap(TestIdExtModules.BUTTON_KEYPAD_ENTER);
+ tap(TestIdExtModules.BUTTON_RECEIPTDISCOUNTS_APPLY);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "979.80");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTNAME, "-- " + VAR_DISCOUNT_AMT_NAME);
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTAMOUNT, "-20.00");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTNAME2,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 100 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTAMOUNT2, "-62.97");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTNAME,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 100 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTAMOUNT, "-37.03");
+
+ tap(TestIdExtModules.BUTTON_DELETERECEIPT);
+ tap(TestIdExtModules.BUTTON_DELETERECEIPT_CONFIRM);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "0.00");
+ }
+
+ @Test
+ public void test2() {
+ tap(TestIdExtModules.BUTTON_SEARCH);
+ write(TestIdExtModules.FIELD_SEARCH_TEXT, PRODUCT_NAME_3);
+ tap(TestIdExtModules.BUTTON_SEARCH_EXECUTE);
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "40.00");
+
+ tap(TestIdExtModules.BUTTON_SEARCH);
+ write(TestIdExtModules.FIELD_SEARCH_TEXT, PRODUCT_NAME_2);
+ tap(TestIdExtModules.BUTTON_SEARCH_EXECUTE);
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "71.90");
+
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_DOT);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "61.80");
+
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW2);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_DOT);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "51.70");
+
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW3);
+ tap(TestIdExtModules.BUTTON_KEYPAD_2);
+ tap(TestIdExtModules.BUTTON_KEYPAD_DOT);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "22.70");
+
+ // Add User defined Discount
+ getDiscount(VAR_DISCOUNT_AMT_NAME);
+ tap(TestIdExtModules.BUTTON_KEYPAD_1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_ENTER);
+ tap(TestIdExtModules.BUTTON_RECEIPTDISCOUNTS_CHECKAPPLYALL);
+ tap(TestIdExtModules.BUTTON_RECEIPTDISCOUNTS_APPLY);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "19.70");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTNAME_EXTMOD, "-- " + VAR_DISCOUNT_AMT_NAME);
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTAMOUNT_EXTMOD, "-1.00");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTNAME_EXTMOD, "-- " + VAR_DISCOUNT_AMT_NAME);
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTAMOUNT_EXTMOD, "-1.00");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW3_DISCOUNTNAME, "-- " + VAR_DISCOUNT_AMT_NAME);
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW3_DISCOUNTAMOUNT, "-1.00");
+
+ // Add Variable Discount per Total Amount
+ getDiscount(VAR_TOTALDISCOUNT_AMT_NAME);
+ tap(TestIdExtModules.BUTTON_KEYPAD_1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_0);
+ tap(TestIdExtModules.BUTTON_KEYPAD_ENTER);
+ tap(TestIdExtModules.BUTTON_RECEIPTDISCOUNTS_APPLY);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "9.70");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTNAME_EXTMOD, "-- " + VAR_DISCOUNT_AMT_NAME);
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTAMOUNT_EXTMOD, "-1.00");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTNAME2_EXTMOD,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 10 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTAMOUNT2_EXTMOD, "-4.52");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTNAME_EXTMOD, "-- " + VAR_DISCOUNT_AMT_NAME);
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTAMOUNT_EXTMOD, "-1.00");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTNAME2_EXTMOD,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 10 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTAMOUNT2_EXTMOD, "-4.52");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW3_DISCOUNTNAME, "-- " + VAR_DISCOUNT_AMT_NAME);
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW3_DISCOUNTAMOUNT, "-1.00");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW3_DISCOUNTNAME2,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 10 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW3_DISCOUNTAMOUNT2, "-0.96");
+
+ tap(TestIdExtModules.BUTTON_DELETERECEIPT);
+ tap(TestIdExtModules.BUTTON_DELETERECEIPT_CONFIRM);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "0.00");
+ }
+
+ @Test
+ public void test3() {
+ tap(TestIdExtModules.BUTTON_SEARCH);
+ write(TestIdExtModules.FIELD_SEARCH_TEXT, PRODUCT_NAME_3);
+ tap(TestIdExtModules.BUTTON_SEARCH_EXECUTE);
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "20.00");
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "40.00");
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "60.00");
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "80.00");
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "100.00");
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "120.00");
+
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_DOT);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW2);
+ tap(TestIdExtModules.BUTTON_KEYPAD_1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_DOT);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW3);
+ tap(TestIdExtModules.BUTTON_KEYPAD_1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_DOT);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW4);
+ tap(TestIdExtModules.BUTTON_KEYPAD_1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_DOT);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW5);
+ tap(TestIdExtModules.BUTTON_KEYPAD_1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_DOT);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW6);
+ tap(TestIdExtModules.BUTTON_KEYPAD_1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_DOT);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "119.40");
+
+ // Add Variable Discount per Total Amount
+ getDiscount(VAR_TOTALDISCOUNT_AMT_NAME);
+ tap(TestIdExtModules.BUTTON_KEYPAD_6);
+ tap(TestIdExtModules.BUTTON_KEYPAD_0);
+ tap(TestIdExtModules.BUTTON_KEYPAD_ENTER);
+ tap(TestIdExtModules.BUTTON_RECEIPTDISCOUNTS_APPLY);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "59.40");
+
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTNAME_EXTMOD,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 60 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTAMOUNT_EXTMOD, "-10.00");
+
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTNAME_EXTMOD,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 60 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTAMOUNT_EXTMOD, "-10.00");
+
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW3_DISCOUNTNAME_EXTMOD,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 60 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW3_DISCOUNTAMOUNT_EXTMOD, "-10.00");
+
+ tap(TestIdExtModules.BUTTON_DELETERECEIPT);
+ tap(TestIdExtModules.BUTTON_DELETERECEIPT_CONFIRM);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "0.00");
+ }
+
+ @Test
+ public void test4() {
+ tap(TestIdExtModules.BUTTON_SEARCH);
+ write(TestIdExtModules.FIELD_SEARCH_TEXT, PRODUCT_NAME_1);
+ tap(TestIdExtModules.BUTTON_SEARCH_EXECUTE);
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "55.50");
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_0);
+ tap(TestIdExtModules.BUTTON_KEYPAD_0);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "100.00");
+
+ tap(TestIdExtModules.BUTTON_SEARCH);
+ write(TestIdExtModules.FIELD_SEARCH_TEXT, PRODUCT_NAME_2);
+ tap(TestIdExtModules.BUTTON_SEARCH_EXECUTE);
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "131.90");
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW2);
+ tap(TestIdExtModules.BUTTON_KEYPAD_2);
+ tap(TestIdExtModules.BUTTON_KEYPAD_0);
+ tap(TestIdExtModules.BUTTON_KEYPAD_0);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "300.00");
+
+ // Add User defined Discount
+ getDiscount(VAR_DISCOUNT_AMT_NAME);
+ tap(TestIdExtModules.BUTTON_KEYPAD_5);
+ tap(TestIdExtModules.BUTTON_KEYPAD_0);
+ tap(TestIdExtModules.BUTTON_KEYPAD_ENTER);
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW2_CHECKBOX);
+ tap(TestIdExtModules.BUTTON_RECEIPTDISCOUNTS_APPLY);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "250.00");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTNAME, "-- " + VAR_DISCOUNT_AMT_NAME);
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTAMOUNT, "-50.00");
+
+ // Add Variable Discount per Total Amount
+ getDiscount(VAR_TOTALDISCOUNT_AMT_NAME);
+ tap(TestIdExtModules.BUTTON_KEYPAD_1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_8);
+ tap(TestIdExtModules.BUTTON_KEYPAD_0);
+ tap(TestIdExtModules.BUTTON_KEYPAD_ENTER);
+ tap(TestIdExtModules.BUTTON_RECEIPTDISCOUNTS_APPLY);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "70.00");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTNAME,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 180 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTAMOUNT, "-72.00");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTNAME, "-- " + VAR_DISCOUNT_AMT_NAME);
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTAMOUNT, "-50.00");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTNAME2,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 180 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTAMOUNT2, "-108.00");
+
+ tap(TestIdExtModules.BUTTON_DELETERECEIPT);
+ tap(TestIdExtModules.BUTTON_DELETERECEIPT_CONFIRM);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "0.00");
+ }
+
+ private void getDiscount(String discountName) {
+ tap(TestIdExtModules.BUTTON_MENU);
+ tap(TestIdExtModules.BUTTON_MENU_RECEIPTDISCOUNTS);
+ tap(TestIdExtModules.BUTTON_DISCOUNTSCATEGORY_DISCOUNTSLIST);
+ write(TestIdExtModules.BUTTON_DISCOUNTSCATEGORY_SEARCHBOX, discountName);
+ tap(TestIdExtModules.BUTTON_DISCOUNTCATEGORY_SEARCH);
+ tap(TestIdExtModules.BUTTON_DISCOUNTCATEGORY_ROW1);
+ }
+}
# HG changeset patch
# User Ranjith S R <ranjith@qualiantech.com>
# Date 1589820972 -19800
# Mon May 18 22:26:12 2020 +0530
# Node ID df9ff9761dfaaaf75bea24f06dceed2a3b05d5a1
# Parent 132fdcec4c2f031bbf4ef530685235dcbfa88785
Related to issue 43880 : Discount should be calculated based on Total Receipt Amount
* Total Discount Amount will be calculated for the total receipt amount which excludes
manual promotions amount or any other promotions amount.
diff -r 132fdcec4c2f -r df9ff9761dfa web/org.openbravo.retail.discounts.bytotal/js/promotion-by-total-utils.js
--- a/web/org.openbravo.retail.discounts.bytotal/js/promotion-by-total-utils.js Thu Apr 02 15:43:26 2020 +0200
+++ b/web/org.openbravo.retail.discounts.bytotal/js/promotion-by-total-utils.js Mon May 18 22:26:12 2020 +0530
@@ -308,7 +308,6 @@
if (!discountRule.get('applyNext')) {
OB.Model.Discounts.DISCT.removeAutoPromotionsFromReceipt(receipt);
}
-
var accumdiscount = 0;
OB.Model.Discounts.DISCT.preprocess(
discountRule,
@@ -321,32 +320,43 @@
ruleFromReceipt.get('rule').userAmt ||
discountRule.get('userAmt') ||
discountRule.get('disctTotalamountdisc');
- preprocess.linesToCompute = _.sortBy(
- preprocess.linesToCompute,
- function(rule) {
- return rule.line.get('discountedNet');
- }
- );
//Calculate the discounts applied to receipt, to update the total receipt
discountReceipt = preprocess.linesToCompute.reduce(function(memo, l) {
var discount = 0,
- ruleApplied = _.find(l.line.get('promotions'), function(p) {
- return p.ruleId === ruleFromReceipt.get('rule').id;
- });
+ promotionList = l.line.get('promotions') || [];
+ var promoApplied = _.filter(promotionList, function(p) {
+ return (
+ p.ruleId === ruleFromReceipt.get('rule').id &&
+ p.discountinstance ===
+ ruleFromReceipt.get('rule').discountinstance
+ );
+ });
+ if (promoApplied.length > 0) {
+ return memo;
+ }
+ if (l.line.get('orderManualPromotionsAlreadyApplied')) {
+ return memo;
+ }
+ promotionList.forEach(function(p) {
+ if (OB.UTIL.isNullOrUndefined(p.amt) || p.manual) {
+ return;
+ }
+
+ if (
+ p.ruleId !== discountRule.get('id') &&
+ p.discountinstance ===
+ ruleFromReceipt.get('rule').discountinstance
+ ) {
+ discount = OB.DEC.add(discount, p.amt);
+ }
+ });
if (
- !l.line.get('splitline') &&
- OB.UTIL.isNullOrUndefined(ruleApplied)
+ l.line.get('manualPromotions') &&
+ l.line.get('manualPromotions').length > 0
) {
- discount =
- l.line.getDiscount() > 0
- ? l.line.getDiscount()
- : !OB.UTIL.isNullOrUndefined(
- l.line.get('manualPromotions')
- ) && l.line.get('manualPromotions').length > 0
- ? l.line.get('manualPromotions').reduce(function(memo, mp) {
- return OB.DEC.add(memo, mp.amt);
- }, 0)
- : 0;
+ l.line.get('manualPromotions').forEach(function(p) {
+ discount = OB.DEC.add(discount, p.amt);
+ });
}
return OB.DEC.add(memo, discount);
}, 0);
@@ -359,26 +369,28 @@
linePrice = l.total,
promotionList = [],
promoApplied = null;
- // distributing discount in all lines based on total of each one
- // if PIT, in gross
- // if no PIT, in net
- if (!l.line.get('splitline')) {
- if (!OB.UTIL.isNullOrUndefined(l.line.get('promotions'))) {
- promotionList = l.line.get('promotions');
- }
- if (!OB.UTIL.isNullOrUndefined(l.line.get('manualPromotions'))) {
- promotionList = promotionList.concat(
- l.line.get('manualPromotions')
- );
- }
- promotionList = _.uniq(promotionList, false, function(p) {
- return p.ruleId;
+
+ if (
+ !OB.UTIL.isNullOrUndefined(l.line.get('promotions')) &&
+ l.line.get('promotions').length > 0
+ ) {
+ l.line.get('promotions').forEach(function(p) {
+ if (OB.UTIL.isNullOrUndefined(p.amt) || p.manual) {
+ return;
+ }
+ promotionList.push(p);
});
}
+ if (!OB.UTIL.isNullOrUndefined(l.line.get('manualPromotions'))) {
+ promotionList = promotionList.concat(
+ l.line.get('manualPromotions')
+ );
+ }
promoApplied = _.find(promotionList, function(p) {
return (
p.ruleId === discountRule.get('id') &&
- p.rule.get('userAmt') === discountRule.get('userAmt')
+ p.discountinstance ===
+ ruleFromReceipt.get('rule').discountinstance
);
});
if (!OB.UTIL.isNullOrUndefined(promoApplied)) {
# HG changeset patch
# User Ranjith S R <ranjith@qualiantech.com>
# Date 1589821023 -19800
# Mon May 18 22:27:03 2020 +0530
# Node ID 159afc437135551f808d99367e883f921287ee2b
# Parent 46a6471562f48f1c8ecfb86670a05b44b761e3d7
Verifies issue 43880 : Added Automated Test I43880_VerifyTotalDiscounts
diff -r 46a6471562f4 -r 159afc437135 src-test/org/openbravo/test/mobile/retail/extmodules/selenium/TestIdExtModules.java
--- a/src-test/org/openbravo/test/mobile/retail/extmodules/selenium/TestIdExtModules.java Mon May 18 16:42:03 2020 +0530
+++ b/src-test/org/openbravo/test/mobile/retail/extmodules/selenium/TestIdExtModules.java Mon May 18 22:27:03 2020 +0530
@@ -766,6 +766,8 @@
// Discount Category
public static TestIdConstructor BUTTON_DISCOUNTSCATEGORY_DISCOUNTSLIST = new TestIdConstructor(
"coreElementContainer_discountsList", EnyoKind.BUTTON); //
+ public static TestIdConstructor BUTTON_DISCOUNTSCATEGORY_SEARCHBOX = new TestIdConstructor(
+ "discatlistitemprinter_filterText"); //
public static TestIdConstructor BUTTON_DISCOUNTCATEGORY_SEARCH = new TestIdConstructor(
"discatlistitemprinter_button2", EnyoKind.BUTTON);
public static TestIdConstructor BUTTON_DISCOUNTCATEGORY_ROW1 = new TestIdConstructor(
diff -r 46a6471562f4 -r 159afc437135 src-test/org/openbravo/test/mobile/retail/extmodules/selenium/tests/discounts_bytotal/I43880_VerifyTotalDiscounts.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src-test/org/openbravo/test/mobile/retail/extmodules/selenium/tests/discounts_bytotal/I43880_VerifyTotalDiscounts.java Mon May 18 22:27:03 2020 +0530
@@ -0,0 +1,357 @@
+/*
+ *************************************************************************
+ * The contents of this file are subject to the Openbravo Public License
+ * Version 1.0 (the "License"), being the Mozilla Public License
+ * Version 1.1 with a permitted attribution clause; you may not use this
+ * file except in compliance with the License. You may obtain a copy of
+ * the License at http://www.openbravo.com/legal/license.html
+ * Software distributed under the License is distributed on an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ * License for the specific language governing rights and limitations
+ * under the License.
+ * The Original Code is Openbravo ERP.
+ * The Initial Developer of the Original Code is Openbravo S.L.U.
+ * All portions are Copyright (C) 2019 Openbravo S.L.U.
+ * All Rights Reserved.
+ * Contributor(s):
+ ************************************************************************
+ *
+ * @author RAN
+ *
+ */
+
+package org.openbravo.test.mobile.retail.extmodules.selenium.tests.discounts_bytotal;
+
+import org.junit.Test;
+import org.openbravo.test.mobile.retail.extmodules.selenium.TestIdExtModules;
+import org.openbravo.test.mobile.retail.extmodules.selenium.terminals.WebPOSExtModulesTerminalHelper;
+
+public class I43880_VerifyTotalDiscounts extends WebPOSExtModulesTerminalHelper {
+ final String PRODUCT_NAME_1 = "Basecamp lantern";
+ final String PRODUCT_NAME_2 = "Basecamp lantern with legs";
+ final String PRODUCT_NAME_3 = "Backpack ADP2 12l";
+ final String PRODUCT_NAME_4 = "Headlamp ultralight";
+ final String VAR_DISCOUNT_AMT_NAME = "disc_5_var_euro";
+ final String VAR_TOTALDISCOUNT_AMT_NAME = "Variable Amount Discount By Total";
+ final String VAR_TOTALDISCOUNT_PERCENT_NAME = "Variable Percentage Discount By Total";
+
+ @Test
+ public void test() {
+ tap(TestIdExtModules.BUTTON_SEARCH);
+ write(TestIdExtModules.FIELD_SEARCH_TEXT, PRODUCT_NAME_1);
+ tap(TestIdExtModules.BUTTON_SEARCH_EXECUTE);
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "55.50");
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_6);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_DOT);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "699.90");
+
+ tap(TestIdExtModules.BUTTON_SEARCH);
+ write(TestIdExtModules.FIELD_SEARCH_TEXT, PRODUCT_NAME_2);
+ tap(TestIdExtModules.BUTTON_SEARCH_EXECUTE);
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "731.80");
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW2);
+ tap(TestIdExtModules.BUTTON_KEYPAD_3);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_DOT);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "1,099.80");
+
+ // Add User defined Discount
+ getDiscount(VAR_DISCOUNT_AMT_NAME);
+ tap(TestIdExtModules.BUTTON_KEYPAD_2);
+ tap(TestIdExtModules.BUTTON_KEYPAD_0);
+ tap(TestIdExtModules.BUTTON_KEYPAD_ENTER);
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW1_CHECKBOX);
+ tap(TestIdExtModules.BUTTON_RECEIPTDISCOUNTS_APPLY);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "1,079.80");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTNAME, "-- " + VAR_DISCOUNT_AMT_NAME);
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTAMOUNT, "-20.00");
+
+ // Add Variable Discount per Total Amount
+ getDiscount(VAR_TOTALDISCOUNT_AMT_NAME);
+ tap(TestIdExtModules.BUTTON_KEYPAD_1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_0);
+ tap(TestIdExtModules.BUTTON_KEYPAD_0);
+ tap(TestIdExtModules.BUTTON_KEYPAD_ENTER);
+ tap(TestIdExtModules.BUTTON_RECEIPTDISCOUNTS_APPLY);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "979.80");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTNAME, "-- " + VAR_DISCOUNT_AMT_NAME);
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTAMOUNT, "-20.00");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTNAME2,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 100 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTAMOUNT2, "-62.97");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTNAME,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 100 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTAMOUNT, "-37.03");
+
+ tap(TestIdExtModules.BUTTON_SEARCH);
+ write(TestIdExtModules.FIELD_SEARCH_TEXT, PRODUCT_NAME_4);
+ tap(TestIdExtModules.BUTTON_SEARCH_EXECUTE);
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "998.70");
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW3);
+ tap(TestIdExtModules.BUTTON_KEYPAD_5);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_DOT);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "1,039.70");
+
+ // Add User defined Discount
+ getDiscount(VAR_DISCOUNT_AMT_NAME);
+ tap(TestIdExtModules.BUTTON_KEYPAD_1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_0);
+ tap(TestIdExtModules.BUTTON_KEYPAD_ENTER);
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW3_CHECKBOX);
+ tap(TestIdExtModules.BUTTON_RECEIPTDISCOUNTS_APPLY);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "1,029.70");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW3_DISCOUNTNAME, "-- " + VAR_DISCOUNT_AMT_NAME);
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW3_DISCOUNTAMOUNT, "-10.00");
+
+ tap(TestIdExtModules.BUTTON_DELETERECEIPT);
+ tap(TestIdExtModules.BUTTON_DELETERECEIPT_CONFIRM);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "0.00");
+ }
+
+ @Test
+ public void test2() {
+ tap(TestIdExtModules.BUTTON_SEARCH);
+ write(TestIdExtModules.FIELD_SEARCH_TEXT, PRODUCT_NAME_3);
+ tap(TestIdExtModules.BUTTON_SEARCH_EXECUTE);
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "20.00");
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "40.00");
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "60.00");
+
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_DOT);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW2);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_DOT);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW3);
+ tap(TestIdExtModules.BUTTON_KEYPAD_2);
+ tap(TestIdExtModules.BUTTON_KEYPAD_DOT);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "22.70");
+
+ // Add Variable Discount per Total Amount
+ getDiscount(VAR_TOTALDISCOUNT_AMT_NAME);
+ tap(TestIdExtModules.BUTTON_KEYPAD_1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_0);
+ tap(TestIdExtModules.BUTTON_KEYPAD_ENTER);
+ tap(TestIdExtModules.BUTTON_RECEIPTDISCOUNTS_APPLY);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "12.70");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTNAME_EXTMOD,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 10 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTAMOUNT_EXTMOD, "-4.36");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTNAME_EXTMOD,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 10 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTAMOUNT_EXTMOD, "-4.36");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW3_DISCOUNTNAME_EXTMOD,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 10 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW3_DISCOUNTAMOUNT_EXTMOD, "-1.28");
+
+ // Add Variable Percentage Discount By Total
+ getDiscount(VAR_TOTALDISCOUNT_PERCENT_NAME);
+ tap(TestIdExtModules.BUTTON_KEYPAD_2);
+ tap(TestIdExtModules.BUTTON_KEYPAD_0);
+ tap(TestIdExtModules.BUTTON_KEYPAD_ENTER);
+ tap(TestIdExtModules.BUTTON_RECEIPTDISCOUNTS_APPLY);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "10.16");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTNAME_EXTMOD,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 10 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTAMOUNT_EXTMOD, "-4.36");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTNAME2_EXTMOD,
+ "-- " + VAR_TOTALDISCOUNT_PERCENT_NAME + " - 20%");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTAMOUNT2_EXTMOD, "-1.11");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTNAME_EXTMOD,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 10 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTAMOUNT_EXTMOD, "-4.36");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTNAME2_EXTMOD,
+ "-- " + VAR_TOTALDISCOUNT_PERCENT_NAME + " - 20%");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTAMOUNT2_EXTMOD, "-1.11");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW3_DISCOUNTNAME_EXTMOD,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 10 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW3_DISCOUNTAMOUNT_EXTMOD, "-1.28");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW3_DISCOUNTNAME2_EXTMOD,
+ "-- " + VAR_TOTALDISCOUNT_PERCENT_NAME + " - 20%");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW3_DISCOUNTAMOUNT2_EXTMOD, "-0.32");
+
+ tap(TestIdExtModules.BUTTON_DELETERECEIPT);
+ tap(TestIdExtModules.BUTTON_DELETERECEIPT_CONFIRM);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "0.00");
+ }
+
+ @Test
+ public void test3() {
+ tap(TestIdExtModules.BUTTON_SEARCH);
+ write(TestIdExtModules.FIELD_SEARCH_TEXT, PRODUCT_NAME_3);
+ tap(TestIdExtModules.BUTTON_SEARCH_EXECUTE);
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "20.00");
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "40.00");
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "60.00");
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "80.00");
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "100.00");
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "120.00");
+
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_DOT);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW2);
+ tap(TestIdExtModules.BUTTON_KEYPAD_1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_DOT);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW3);
+ tap(TestIdExtModules.BUTTON_KEYPAD_1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_DOT);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW4);
+ tap(TestIdExtModules.BUTTON_KEYPAD_1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_DOT);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW5);
+ tap(TestIdExtModules.BUTTON_KEYPAD_1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_DOT);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW6);
+ tap(TestIdExtModules.BUTTON_KEYPAD_1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_DOT);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "119.40");
+
+ // Add Variable Discount per Total Amount
+ getDiscount(VAR_TOTALDISCOUNT_AMT_NAME);
+ tap(TestIdExtModules.BUTTON_KEYPAD_6);
+ tap(TestIdExtModules.BUTTON_KEYPAD_0);
+ tap(TestIdExtModules.BUTTON_KEYPAD_ENTER);
+ tap(TestIdExtModules.BUTTON_RECEIPTDISCOUNTS_APPLY);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "59.40");
+
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTNAME_EXTMOD,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 60 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTAMOUNT_EXTMOD, "-10.00");
+
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTNAME_EXTMOD,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 60 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTAMOUNT_EXTMOD, "-10.00");
+
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW3_DISCOUNTNAME_EXTMOD,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 60 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW3_DISCOUNTAMOUNT_EXTMOD, "-10.00");
+
+ tap(TestIdExtModules.BUTTON_DELETERECEIPT);
+ tap(TestIdExtModules.BUTTON_DELETERECEIPT_CONFIRM);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "0.00");
+ }
+
+ @Test
+ public void test4() {
+ tap(TestIdExtModules.BUTTON_SEARCH);
+ write(TestIdExtModules.FIELD_SEARCH_TEXT, PRODUCT_NAME_1);
+ tap(TestIdExtModules.BUTTON_SEARCH_EXECUTE);
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "55.50");
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_0);
+ tap(TestIdExtModules.BUTTON_KEYPAD_0);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "100.00");
+
+ tap(TestIdExtModules.BUTTON_SEARCH);
+ write(TestIdExtModules.FIELD_SEARCH_TEXT, PRODUCT_NAME_2);
+ tap(TestIdExtModules.BUTTON_SEARCH_EXECUTE);
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "131.90");
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW2);
+ tap(TestIdExtModules.BUTTON_KEYPAD_2);
+ tap(TestIdExtModules.BUTTON_KEYPAD_0);
+ tap(TestIdExtModules.BUTTON_KEYPAD_0);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "300.00");
+
+ // Add User defined Discount
+ getDiscount(VAR_DISCOUNT_AMT_NAME);
+ tap(TestIdExtModules.BUTTON_KEYPAD_5);
+ tap(TestIdExtModules.BUTTON_KEYPAD_0);
+ tap(TestIdExtModules.BUTTON_KEYPAD_ENTER);
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW2_CHECKBOX);
+ tap(TestIdExtModules.BUTTON_RECEIPTDISCOUNTS_APPLY);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "250.00");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTNAME, "-- " + VAR_DISCOUNT_AMT_NAME);
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTAMOUNT, "-50.00");
+
+ // Add Variable Discount per Total Amount
+ getDiscount(VAR_TOTALDISCOUNT_AMT_NAME);
+ tap(TestIdExtModules.BUTTON_KEYPAD_1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_8);
+ tap(TestIdExtModules.BUTTON_KEYPAD_0);
+ tap(TestIdExtModules.BUTTON_KEYPAD_ENTER);
+ tap(TestIdExtModules.BUTTON_RECEIPTDISCOUNTS_APPLY);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "70.00");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTNAME,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 180 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTAMOUNT, "-72.00");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTNAME, "-- " + VAR_DISCOUNT_AMT_NAME);
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTAMOUNT, "-50.00");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTNAME2,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 180 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTAMOUNT2, "-108.00");
+
+ tap(TestIdExtModules.BUTTON_DELETERECEIPT);
+ tap(TestIdExtModules.BUTTON_DELETERECEIPT_CONFIRM);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "0.00");
+ }
+
+ private void getDiscount(String discountName) {
+ tap(TestIdExtModules.BUTTON_MENU);
+ tap(TestIdExtModules.BUTTON_MENU_RECEIPTDISCOUNTS);
+ tap(TestIdExtModules.BUTTON_DISCOUNTSCATEGORY_DISCOUNTSLIST);
+ write(TestIdExtModules.BUTTON_DISCOUNTSCATEGORY_SEARCHBOX, discountName);
+ tap(TestIdExtModules.BUTTON_DISCOUNTCATEGORY_SEARCH);
+ tap(TestIdExtModules.BUTTON_DISCOUNTCATEGORY_ROW1);
+ }
+}
diff -r 46a6471562f4 -r 159afc437135 src-test/org/openbravo/test/mobile/retail/pack/selenium/TestIdPack.java
--- a/src-test/org/openbravo/test/mobile/retail/pack/selenium/TestIdPack.java Mon May 18 16:42:03 2020 +0530
+++ b/src-test/org/openbravo/test/mobile/retail/pack/selenium/TestIdPack.java Mon May 18 22:27:03 2020 +0530
@@ -2899,6 +2899,10 @@
"listOrderLines_row3_control3"); //
public static TestIdConstructor LABEL_RECEIPT_ROW3_DISCOUNTAMOUNT_EXTMOD = new TestIdConstructor(
"listOrderLines_row3_control4"); //
+ public static TestIdConstructor LABEL_RECEIPT_ROW3_DISCOUNTNAME2_EXTMOD = new TestIdConstructor(
+ "listOrderLines_row3_control7"); //
+ public static TestIdConstructor LABEL_RECEIPT_ROW3_DISCOUNTAMOUNT2_EXTMOD = new TestIdConstructor(
+ "listOrderLines_row3_control8"); //
public static TestIdConstructor LABEL_RECEIPT_ROW4_DISCOUNTNAME_EXTMOD = new TestIdConstructor(
"listOrderLines_row4_control3"); //
public static TestIdConstructor LABEL_RECEIPT_ROW4_DISCOUNTAMOUNT_EXTMOD = new TestIdConstructor(
# HG changeset patch
# User Ranjith S R <ranjith@qualiantech.com>
# Date 1590391784 -19800
# Mon May 25 12:59:44 2020 +0530
# Node ID b1749737146291fd0cf3efd5d10c81117f60c9e1
# Parent 132fdcec4c2f031bbf4ef530685235dcbfa88785
Related to issue 43880 : Discount should be calculated based on Total Receipt Amount
* Total Discount Amount will be calculated for the total receipt amount which excludes
manual promotions amount or any other promotions amount.
diff -r 132fdcec4c2f -r b17497371462 web/org.openbravo.retail.discounts.bytotal/js/promotion-by-total-utils.js
--- a/web/org.openbravo.retail.discounts.bytotal/js/promotion-by-total-utils.js Thu Apr 02 15:43:26 2020 +0200
+++ b/web/org.openbravo.retail.discounts.bytotal/js/promotion-by-total-utils.js Mon May 25 12:59:44 2020 +0530
@@ -308,7 +308,6 @@
if (!discountRule.get('applyNext')) {
OB.Model.Discounts.DISCT.removeAutoPromotionsFromReceipt(receipt);
}
-
var accumdiscount = 0;
OB.Model.Discounts.DISCT.preprocess(
discountRule,
@@ -321,32 +320,59 @@
ruleFromReceipt.get('rule').userAmt ||
discountRule.get('userAmt') ||
discountRule.get('disctTotalamountdisc');
- preprocess.linesToCompute = _.sortBy(
- preprocess.linesToCompute,
- function(rule) {
- return rule.line.get('discountedNet');
- }
- );
+
+ var orderManualPromotions =
+ receipt.get('orderManualPromotions') || [],
+ discountOrderNo = _.find(orderManualPromotions.models, function(p) {
+ return p.get('discountRule').get('id') === discountRule.get('id');
+ }).get('rule').noOrder,
+ validateDiscountOrder = function(currentDiscountRule) {
+ var appliedTotalDiscount = _.find(
+ orderManualPromotions.models,
+ function(p) {
+ return (
+ p.get('discountRule').get('id') ===
+ currentDiscountRule.ruleId
+ );
+ }
+ );
+ if (
+ appliedTotalDiscount &&
+ appliedTotalDiscount.get('rule').noOrder &&
+ appliedTotalDiscount.get('rule').noOrder >= discountOrderNo
+ ) {
+ return true;
+ }
+ return false;
+ };
+
//Calculate the discounts applied to receipt, to update the total receipt
discountReceipt = preprocess.linesToCompute.reduce(function(memo, l) {
var discount = 0,
- ruleApplied = _.find(l.line.get('promotions'), function(p) {
- return p.ruleId === ruleFromReceipt.get('rule').id;
- });
+ promotionList = l.line.get('promotions') || [];
+ promotionList.forEach(function(p) {
+ if (
+ OB.UTIL.isNullOrUndefined(p.amt) ||
+ p.manual ||
+ validateDiscountOrder(p)
+ ) {
+ return;
+ }
+ if (
+ p.ruleId !== discountRule.get('id') &&
+ p.discountinstance ===
+ ruleFromReceipt.get('rule').discountinstance
+ ) {
+ discount = OB.DEC.add(discount, p.amt);
+ }
+ });
if (
- !l.line.get('splitline') &&
- OB.UTIL.isNullOrUndefined(ruleApplied)
+ l.line.get('manualPromotions') &&
+ l.line.get('manualPromotions').length > 0
) {
- discount =
- l.line.getDiscount() > 0
- ? l.line.getDiscount()
- : !OB.UTIL.isNullOrUndefined(
- l.line.get('manualPromotions')
- ) && l.line.get('manualPromotions').length > 0
- ? l.line.get('manualPromotions').reduce(function(memo, mp) {
- return OB.DEC.add(memo, mp.amt);
- }, 0)
- : 0;
+ l.line.get('manualPromotions').forEach(function(p) {
+ discount = OB.DEC.add(discount, p.amt);
+ });
}
return OB.DEC.add(memo, discount);
}, 0);
@@ -359,26 +385,32 @@
linePrice = l.total,
promotionList = [],
promoApplied = null;
- // distributing discount in all lines based on total of each one
- // if PIT, in gross
- // if no PIT, in net
- if (!l.line.get('splitline')) {
- if (!OB.UTIL.isNullOrUndefined(l.line.get('promotions'))) {
- promotionList = l.line.get('promotions');
- }
- if (!OB.UTIL.isNullOrUndefined(l.line.get('manualPromotions'))) {
- promotionList = promotionList.concat(
- l.line.get('manualPromotions')
- );
- }
- promotionList = _.uniq(promotionList, false, function(p) {
- return p.ruleId;
+
+ if (
+ !OB.UTIL.isNullOrUndefined(l.line.get('promotions')) &&
+ l.line.get('promotions').length > 0
+ ) {
+ l.line.get('promotions').forEach(function(p) {
+ if (
+ OB.UTIL.isNullOrUndefined(p.amt) ||
+ p.manual ||
+ validateDiscountOrder(p)
+ ) {
+ return;
+ }
+ promotionList.push(p);
});
}
+ if (!OB.UTIL.isNullOrUndefined(l.line.get('manualPromotions'))) {
+ promotionList = promotionList.concat(
+ l.line.get('manualPromotions')
+ );
+ }
promoApplied = _.find(promotionList, function(p) {
return (
p.ruleId === discountRule.get('id') &&
- p.rule.get('userAmt') === discountRule.get('userAmt')
+ p.discountinstance ===
+ ruleFromReceipt.get('rule').discountinstance
);
});
if (!OB.UTIL.isNullOrUndefined(promoApplied)) {
@@ -431,19 +463,14 @@
definition.extraProperties =
ruleFromReceipt.get('rule').extraProperties || {};
definition.extraProperties.lineQtyOffer = l.line.get('qty');
- if (
- !line.get('splitline') &&
- l.line.get('promotions') &&
- l.line.get('promotions').length > 0
- ) {
- var discountedGross = l.line
- .get('promotions')
- .reduce(function(memo, element) {
- return OB.DEC.add(
- memo,
- element.actualAmt || element.amt || 0
- );
- }, 0);
+ if (promotionList.length > 0) {
+ var discountedGross = promotionList.reduce(function(
+ memo,
+ element
+ ) {
+ return OB.DEC.add(memo, element.actualAmt || element.amt || 0);
+ },
+ 0);
if (
OB.DEC.sub(
l.line.getGross(),
# HG changeset patch
# User Ranjith S R <ranjith@qualiantech.com>
# Date 1589821023 -19800
# Mon May 18 22:27:03 2020 +0530
# Node ID 146f562d61e0adb34088735f0ded2689f83cf63b
# Parent 455deb3b612810b59b007cd8155080816911c7b4
Verifies issue 43880 : Added Automated Test I43880_VerifyTotalDiscounts
diff -r 455deb3b6128 -r 146f562d61e0 src-test/org/openbravo/test/mobile/retail/extmodules/selenium/TestIdExtModules.java
--- a/src-test/org/openbravo/test/mobile/retail/extmodules/selenium/TestIdExtModules.java Mon May 25 10:32:04 2020 +0530
+++ b/src-test/org/openbravo/test/mobile/retail/extmodules/selenium/TestIdExtModules.java Mon May 18 22:27:03 2020 +0530
@@ -766,6 +766,8 @@
// Discount Category
public static TestIdConstructor BUTTON_DISCOUNTSCATEGORY_DISCOUNTSLIST = new TestIdConstructor(
"coreElementContainer_discountsList", EnyoKind.BUTTON); //
+ public static TestIdConstructor BUTTON_DISCOUNTSCATEGORY_SEARCHBOX = new TestIdConstructor(
+ "discatlistitemprinter_filterText"); //
public static TestIdConstructor BUTTON_DISCOUNTCATEGORY_SEARCH = new TestIdConstructor(
"discatlistitemprinter_button2", EnyoKind.BUTTON);
public static TestIdConstructor BUTTON_DISCOUNTCATEGORY_ROW1 = new TestIdConstructor(
diff -r 455deb3b6128 -r 146f562d61e0 src-test/org/openbravo/test/mobile/retail/extmodules/selenium/tests/discounts_bytotal/I43880_VerifyTotalDiscounts.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src-test/org/openbravo/test/mobile/retail/extmodules/selenium/tests/discounts_bytotal/I43880_VerifyTotalDiscounts.java Mon May 18 22:27:03 2020 +0530
@@ -0,0 +1,457 @@
+/*
+ *************************************************************************
+ * The contents of this file are subject to the Openbravo Public License
+ * Version 1.0 (the "License"), being the Mozilla Public License
+ * Version 1.1 with a permitted attribution clause; you may not use this
+ * file except in compliance with the License. You may obtain a copy of
+ * the License at http://www.openbravo.com/legal/license.html
+ * Software distributed under the License is distributed on an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ * License for the specific language governing rights and limitations
+ * under the License.
+ * The Original Code is Openbravo ERP.
+ * The Initial Developer of the Original Code is Openbravo S.L.U.
+ * All portions are Copyright (C) 2019 Openbravo S.L.U.
+ * All Rights Reserved.
+ * Contributor(s):
+ ************************************************************************
+ *
+ * @author RAN
+ *
+ */
+
+package org.openbravo.test.mobile.retail.extmodules.selenium.tests.discounts_bytotal;
+
+import org.junit.Test;
+import org.openbravo.test.mobile.retail.extmodules.selenium.TestIdExtModules;
+import org.openbravo.test.mobile.retail.extmodules.selenium.terminals.WebPOSExtModulesTerminalHelper;
+
+public class I43880_VerifyTotalDiscounts extends WebPOSExtModulesTerminalHelper {
+ final String PRODUCT_NAME_1 = "Basecamp lantern";
+ final String PRODUCT_NAME_2 = "Basecamp lantern with legs";
+ final String PRODUCT_NAME_3 = "Backpack ADP2 12l";
+ final String PRODUCT_NAME_4 = "Headlamp ultralight";
+ final String VAR_DISCOUNT_AMT_NAME = "disc_5_var_euro";
+ final String VAR_TOTALDISCOUNT_AMT_NAME = "Variable Amount Discount By Total";
+ final String VAR_TOTALDISCOUNT_PERCENT_NAME = "Variable Percentage Discount By Total";
+
+ @Test
+ public void test() {
+ tap(TestIdExtModules.BUTTON_SEARCH);
+ write(TestIdExtModules.FIELD_SEARCH_TEXT, PRODUCT_NAME_1);
+ tap(TestIdExtModules.BUTTON_SEARCH_EXECUTE);
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "55.50");
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_6);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_DOT);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "699.90");
+
+ tap(TestIdExtModules.BUTTON_SEARCH);
+ write(TestIdExtModules.FIELD_SEARCH_TEXT, PRODUCT_NAME_2);
+ tap(TestIdExtModules.BUTTON_SEARCH_EXECUTE);
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "731.80");
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW2);
+ tap(TestIdExtModules.BUTTON_KEYPAD_3);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_DOT);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "1,099.80");
+
+ // Add User defined Discount
+ getDiscount(VAR_DISCOUNT_AMT_NAME);
+ tap(TestIdExtModules.BUTTON_KEYPAD_2);
+ tap(TestIdExtModules.BUTTON_KEYPAD_0);
+ tap(TestIdExtModules.BUTTON_KEYPAD_ENTER);
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW1_CHECKBOX);
+ tap(TestIdExtModules.BUTTON_RECEIPTDISCOUNTS_APPLY);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "1,079.80");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTNAME, "-- " + VAR_DISCOUNT_AMT_NAME);
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTAMOUNT, "-20.00");
+
+ // Add Variable Discount per Total Amount
+ getDiscount(VAR_TOTALDISCOUNT_AMT_NAME);
+ tap(TestIdExtModules.BUTTON_KEYPAD_1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_0);
+ tap(TestIdExtModules.BUTTON_KEYPAD_0);
+ tap(TestIdExtModules.BUTTON_KEYPAD_ENTER);
+ tap(TestIdExtModules.BUTTON_RECEIPTDISCOUNTS_APPLY);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "979.80");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTNAME, "-- " + VAR_DISCOUNT_AMT_NAME);
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTAMOUNT, "-20.00");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTNAME2,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 100 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTAMOUNT2, "-62.97");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTNAME,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 100 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTAMOUNT, "-37.03");
+
+ tap(TestIdExtModules.BUTTON_SEARCH);
+ write(TestIdExtModules.FIELD_SEARCH_TEXT, PRODUCT_NAME_4);
+ tap(TestIdExtModules.BUTTON_SEARCH_EXECUTE);
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "998.70");
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW3);
+ tap(TestIdExtModules.BUTTON_KEYPAD_5);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_DOT);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "1,039.70");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTNAME, "-- " + VAR_DISCOUNT_AMT_NAME);
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTAMOUNT, "-20.00");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTNAME2,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 100 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTAMOUNT2, "-59.66");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTNAME,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 100 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTAMOUNT, "-35.09");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW3_DISCOUNTNAME,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 100 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW3_DISCOUNTAMOUNT, "-5.25");
+
+ // Add User defined Discount
+ getDiscount(VAR_DISCOUNT_AMT_NAME);
+ tap(TestIdExtModules.BUTTON_KEYPAD_1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_0);
+ tap(TestIdExtModules.BUTTON_KEYPAD_ENTER);
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW3_CHECKBOX);
+ tap(TestIdExtModules.BUTTON_RECEIPTDISCOUNTS_APPLY);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "1,029.70");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTNAME, "-- " + VAR_DISCOUNT_AMT_NAME);
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTAMOUNT, "-20.00");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTNAME2,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 100 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTAMOUNT2, "-60.18");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTNAME,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 100 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTAMOUNT, "-35.40");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW3_DISCOUNTNAME, "-- " + VAR_DISCOUNT_AMT_NAME);
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW3_DISCOUNTAMOUNT, "-10.00");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW3_DISCOUNTNAME2,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 100 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW3_DISCOUNTAMOUNT2, "-4.42");
+
+ tap(TestIdExtModules.BUTTON_DELETERECEIPT);
+ tap(TestIdExtModules.BUTTON_DELETERECEIPT_CONFIRM);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "0.00");
+ }
+
+ @Test
+ public void test2() {
+ tap(TestIdExtModules.BUTTON_SEARCH);
+ write(TestIdExtModules.FIELD_SEARCH_TEXT, PRODUCT_NAME_3);
+ tap(TestIdExtModules.BUTTON_SEARCH_EXECUTE);
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "20.00");
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "40.00");
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "60.00");
+
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_DOT);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW2);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_DOT);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW3);
+ tap(TestIdExtModules.BUTTON_KEYPAD_2);
+ tap(TestIdExtModules.BUTTON_KEYPAD_DOT);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "22.70");
+
+ // Add Variable Discount per Total Amount
+ getDiscount(VAR_TOTALDISCOUNT_AMT_NAME);
+ tap(TestIdExtModules.BUTTON_KEYPAD_1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_0);
+ tap(TestIdExtModules.BUTTON_KEYPAD_ENTER);
+ tap(TestIdExtModules.BUTTON_RECEIPTDISCOUNTS_APPLY);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "12.70");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTNAME_EXTMOD,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 10 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTAMOUNT_EXTMOD, "-4.36");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTNAME_EXTMOD,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 10 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTAMOUNT_EXTMOD, "-4.36");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW3_DISCOUNTNAME_EXTMOD,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 10 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW3_DISCOUNTAMOUNT_EXTMOD, "-1.28");
+
+ // Add Variable Percentage Discount By Total
+ getDiscount(VAR_TOTALDISCOUNT_PERCENT_NAME);
+ tap(TestIdExtModules.BUTTON_KEYPAD_2);
+ tap(TestIdExtModules.BUTTON_KEYPAD_0);
+ tap(TestIdExtModules.BUTTON_KEYPAD_ENTER);
+ tap(TestIdExtModules.BUTTON_RECEIPTDISCOUNTS_APPLY);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "10.16");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTNAME_EXTMOD,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 10 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTAMOUNT_EXTMOD, "-4.36");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTNAME2_EXTMOD,
+ "-- " + VAR_TOTALDISCOUNT_PERCENT_NAME + " - 20%");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTAMOUNT2_EXTMOD, "-1.11");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTNAME_EXTMOD,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 10 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTAMOUNT_EXTMOD, "-4.36");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTNAME2_EXTMOD,
+ "-- " + VAR_TOTALDISCOUNT_PERCENT_NAME + " - 20%");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTAMOUNT2_EXTMOD, "-1.11");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW3_DISCOUNTNAME_EXTMOD,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 10 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW3_DISCOUNTAMOUNT_EXTMOD, "-1.28");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW3_DISCOUNTNAME2_EXTMOD,
+ "-- " + VAR_TOTALDISCOUNT_PERCENT_NAME + " - 20%");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW3_DISCOUNTAMOUNT2_EXTMOD, "-0.32");
+
+ tap(TestIdExtModules.BUTTON_DELETERECEIPT);
+ tap(TestIdExtModules.BUTTON_DELETERECEIPT_CONFIRM);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "0.00");
+ }
+
+ @Test
+ public void test3() {
+ tap(TestIdExtModules.BUTTON_SEARCH);
+ write(TestIdExtModules.FIELD_SEARCH_TEXT, PRODUCT_NAME_3);
+ tap(TestIdExtModules.BUTTON_SEARCH_EXECUTE);
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "20.00");
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "40.00");
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "60.00");
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "80.00");
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "100.00");
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "120.00");
+
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_DOT);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW2);
+ tap(TestIdExtModules.BUTTON_KEYPAD_1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_DOT);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW3);
+ tap(TestIdExtModules.BUTTON_KEYPAD_1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_DOT);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW4);
+ tap(TestIdExtModules.BUTTON_KEYPAD_1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_DOT);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW5);
+ tap(TestIdExtModules.BUTTON_KEYPAD_1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_DOT);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW6);
+ tap(TestIdExtModules.BUTTON_KEYPAD_1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_DOT);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "119.40");
+
+ // Add Variable Discount per Total Amount
+ getDiscount(VAR_TOTALDISCOUNT_AMT_NAME);
+ tap(TestIdExtModules.BUTTON_KEYPAD_6);
+ tap(TestIdExtModules.BUTTON_KEYPAD_0);
+ tap(TestIdExtModules.BUTTON_KEYPAD_ENTER);
+ tap(TestIdExtModules.BUTTON_RECEIPTDISCOUNTS_APPLY);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "59.40");
+
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTNAME_EXTMOD,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 60 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTAMOUNT_EXTMOD, "-10.00");
+
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTNAME_EXTMOD,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 60 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTAMOUNT_EXTMOD, "-10.00");
+
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW3_DISCOUNTNAME_EXTMOD,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 60 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW3_DISCOUNTAMOUNT_EXTMOD, "-10.00");
+
+ tap(TestIdExtModules.BUTTON_DELETERECEIPT);
+ tap(TestIdExtModules.BUTTON_DELETERECEIPT_CONFIRM);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "0.00");
+ }
+
+ @Test
+ public void test4() {
+ tap(TestIdExtModules.BUTTON_SEARCH);
+ write(TestIdExtModules.FIELD_SEARCH_TEXT, PRODUCT_NAME_1);
+ tap(TestIdExtModules.BUTTON_SEARCH_EXECUTE);
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "55.50");
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_0);
+ tap(TestIdExtModules.BUTTON_KEYPAD_0);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "100.00");
+
+ tap(TestIdExtModules.BUTTON_SEARCH);
+ write(TestIdExtModules.FIELD_SEARCH_TEXT, PRODUCT_NAME_2);
+ tap(TestIdExtModules.BUTTON_SEARCH_EXECUTE);
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "131.90");
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW2);
+ tap(TestIdExtModules.BUTTON_KEYPAD_2);
+ tap(TestIdExtModules.BUTTON_KEYPAD_0);
+ tap(TestIdExtModules.BUTTON_KEYPAD_0);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "300.00");
+
+ // Add User defined Discount
+ getDiscount(VAR_DISCOUNT_AMT_NAME);
+ tap(TestIdExtModules.BUTTON_KEYPAD_5);
+ tap(TestIdExtModules.BUTTON_KEYPAD_0);
+ tap(TestIdExtModules.BUTTON_KEYPAD_ENTER);
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW2_CHECKBOX);
+ tap(TestIdExtModules.BUTTON_RECEIPTDISCOUNTS_APPLY);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "250.00");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTNAME, "-- " + VAR_DISCOUNT_AMT_NAME);
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTAMOUNT, "-50.00");
+
+ // Add Variable Discount per Total Amount
+ getDiscount(VAR_TOTALDISCOUNT_AMT_NAME);
+ tap(TestIdExtModules.BUTTON_KEYPAD_1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_8);
+ tap(TestIdExtModules.BUTTON_KEYPAD_0);
+ tap(TestIdExtModules.BUTTON_KEYPAD_ENTER);
+ tap(TestIdExtModules.BUTTON_RECEIPTDISCOUNTS_APPLY);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "70.00");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTNAME,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 180 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTAMOUNT, "-72.00");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTNAME, "-- " + VAR_DISCOUNT_AMT_NAME);
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTAMOUNT, "-50.00");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTNAME2,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 180 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTAMOUNT2, "-108.00");
+
+ tap(TestIdExtModules.BUTTON_DELETERECEIPT);
+ tap(TestIdExtModules.BUTTON_DELETERECEIPT_CONFIRM);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "0.00");
+ }
+
+ @Test
+ public void test5() {
+ tap(TestIdExtModules.BUTTON_SEARCH);
+ write(TestIdExtModules.FIELD_SEARCH_TEXT, PRODUCT_NAME_3);
+ tap(TestIdExtModules.BUTTON_SEARCH_EXECUTE);
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "40.00");
+
+ tap(TestIdExtModules.BUTTON_SEARCH);
+ write(TestIdExtModules.FIELD_SEARCH_TEXT, PRODUCT_NAME_2);
+ tap(TestIdExtModules.BUTTON_SEARCH_EXECUTE);
+ tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "71.90");
+
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_DOT);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "61.80");
+
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW2);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_DOT);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "51.70");
+
+ tap(TestIdExtModules.BUTTON_RECEIPT_ROW3);
+ tap(TestIdExtModules.BUTTON_KEYPAD_2);
+ tap(TestIdExtModules.BUTTON_KEYPAD_DOT);
+ tap(TestIdExtModules.BUTTON_KEYPAD_9);
+ tap(TestIdExtModules.BUTTON_KEYPAD_PRICE);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "22.70");
+
+ // Add User defined Discount
+ getDiscount(VAR_DISCOUNT_AMT_NAME);
+ tap(TestIdExtModules.BUTTON_KEYPAD_1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_ENTER);
+ tap(TestIdExtModules.BUTTON_RECEIPTDISCOUNTS_CHECKAPPLYALL);
+ tap(TestIdExtModules.BUTTON_RECEIPTDISCOUNTS_APPLY);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "19.70");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTNAME_EXTMOD, "-- " + VAR_DISCOUNT_AMT_NAME);
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTAMOUNT_EXTMOD, "-1.00");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTNAME_EXTMOD, "-- " + VAR_DISCOUNT_AMT_NAME);
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTAMOUNT_EXTMOD, "-1.00");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW3_DISCOUNTNAME, "-- " + VAR_DISCOUNT_AMT_NAME);
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW3_DISCOUNTAMOUNT, "-1.00");
+
+ // Add Variable Discount per Total Amount
+ getDiscount(VAR_TOTALDISCOUNT_AMT_NAME);
+ tap(TestIdExtModules.BUTTON_KEYPAD_1);
+ tap(TestIdExtModules.BUTTON_KEYPAD_0);
+ tap(TestIdExtModules.BUTTON_KEYPAD_ENTER);
+ tap(TestIdExtModules.BUTTON_RECEIPTDISCOUNTS_APPLY);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "9.70");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTNAME_EXTMOD, "-- " + VAR_DISCOUNT_AMT_NAME);
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTAMOUNT_EXTMOD, "-1.00");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTNAME2_EXTMOD,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 10 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTAMOUNT2_EXTMOD, "-4.52");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTNAME_EXTMOD, "-- " + VAR_DISCOUNT_AMT_NAME);
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTAMOUNT_EXTMOD, "-1.00");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTNAME2_EXTMOD,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 10 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTAMOUNT2_EXTMOD, "-4.52");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW3_DISCOUNTNAME, "-- " + VAR_DISCOUNT_AMT_NAME);
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW3_DISCOUNTAMOUNT, "-1.00");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW3_DISCOUNTNAME2,
+ "-- " + VAR_TOTALDISCOUNT_AMT_NAME + " - 10 EUR");
+ verify(TestIdExtModules.LABEL_RECEIPT_ROW3_DISCOUNTAMOUNT2, "-0.96");
+
+ tap(TestIdExtModules.BUTTON_DELETERECEIPT);
+ tap(TestIdExtModules.BUTTON_DELETERECEIPT_CONFIRM);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "0.00");
+ }
+
+ private void getDiscount(String discountName) {
+ tap(TestIdExtModules.BUTTON_MENU);
+ tap(TestIdExtModules.BUTTON_MENU_RECEIPTDISCOUNTS);
+ tap(TestIdExtModules.BUTTON_DISCOUNTSCATEGORY_DISCOUNTSLIST);
+ write(TestIdExtModules.BUTTON_DISCOUNTSCATEGORY_SEARCHBOX, discountName);
+ tap(TestIdExtModules.BUTTON_DISCOUNTCATEGORY_SEARCH);
+ tap(TestIdExtModules.BUTTON_DISCOUNTCATEGORY_ROW1);
+ }
+}
diff -r 455deb3b6128 -r 146f562d61e0 src-test/org/openbravo/test/mobile/retail/pack/selenium/TestIdPack.java
--- a/src-test/org/openbravo/test/mobile/retail/pack/selenium/TestIdPack.java Mon May 25 10:32:04 2020 +0530
+++ b/src-test/org/openbravo/test/mobile/retail/pack/selenium/TestIdPack.java Mon May 18 22:27:03 2020 +0530
@@ -2899,6 +2899,10 @@
"listOrderLines_row3_control3"); //
public static TestIdConstructor LABEL_RECEIPT_ROW3_DISCOUNTAMOUNT_EXTMOD = new TestIdConstructor(
"listOrderLines_row3_control4"); //
+ public static TestIdConstructor LABEL_RECEIPT_ROW3_DISCOUNTNAME2_EXTMOD = new TestIdConstructor(
+ "listOrderLines_row3_control7"); //
+ public static TestIdConstructor LABEL_RECEIPT_ROW3_DISCOUNTAMOUNT2_EXTMOD = new TestIdConstructor(
+ "listOrderLines_row3_control8"); //
public static TestIdConstructor LABEL_RECEIPT_ROW4_DISCOUNTNAME_EXTMOD = new TestIdConstructor(
"listOrderLines_row4_control3"); //
public static TestIdConstructor LABEL_RECEIPT_ROW4_DISCOUNTAMOUNT_EXTMOD = new TestIdConstructor(
| |||||||
Relationships [ Relation Graph ]
[ Dependency Graph ]
|
|||||||||||||||
|
|||||||||||||||
Notes |
|
|
(0119839) marvintm (viewer) 2020-05-13 15:41 |
The problem cannot be currently reproduced in pi, as it only affected the old discounts engine. We have attached a patch with a solution which can be applied in previous releases. |
Issue History |
|||
| Date Modified | Username | Field | Change |
| 2020-04-27 13:41 | Leyre | New Issue | |
| 2020-04-27 13:41 | Leyre | Assigned To | => Retail |
| 2020-04-27 13:41 | Leyre | OBNetwork customer | => Gold |
| 2020-04-27 13:41 | Leyre | Support ticket | => 15741 |
| 2020-04-27 13:41 | Leyre | Resolution time | => 1589752800 |
| 2020-04-27 13:41 | Leyre | Triggers an Emergency Pack | => No |
| 2020-04-27 13:42 | Leyre | Relationship added | related to 0043521 |
| 2020-04-27 13:43 | Leyre | Relationship added | related to 0043322 |
| 2020-04-30 10:23 | Leyre | Steps to Reproduce Updated | View Revisions |
| 2020-04-30 10:23 | Leyre | Steps to Reproduce Updated | View Revisions |
| 2020-05-05 11:44 | ranjith_qualiantech_com | Assigned To | Retail => ranjith_qualiantech_com |
| 2020-05-06 04:57 | ranjith_qualiantech_com | Status | new => scheduled |
| 2020-05-06 12:43 | ranjith_qualiantech_com | File Added: 43880 source bytotal.patch | |
| 2020-05-06 12:47 | ranjith_qualiantech_com | Note Added: 0119623 | |
| 2020-05-11 15:20 | ranjith_qualiantech_com | Note Deleted: 0119623 | |
| 2020-05-12 09:02 | ranjith_qualiantech_com | File Deleted: 43880 source bytotal.patch | |
| 2020-05-13 10:23 | ranjith_qualiantech_com | File Added: 43880 source bytotal.patch | |
| 2020-05-13 10:23 | ranjith_qualiantech_com | File Added: 43880 test.patch | |
| 2020-05-13 15:41 | marvintm | Review Assigned To | => marvintm |
| 2020-05-13 15:41 | marvintm | Note Added: 0119839 | |
| 2020-05-13 15:41 | marvintm | Status | scheduled => closed |
| 2020-05-13 15:41 | marvintm | Resolution | open => unable to reproduce |
| 2020-05-13 15:41 | marvintm | Fixed in Version | => RR19Q4 |
| 2020-05-18 19:04 | ranjith_qualiantech_com | File Added: 43880_source_bytotal_v2.patch | |
| 2020-05-18 19:05 | ranjith_qualiantech_com | File Added: 43880_source_test_v2.patch | |
| 2020-05-25 09:32 | ranjith_qualiantech_com | File Added: 43880_source_bytotal_v3.patch | |
| 2020-05-25 09:33 | ranjith_qualiantech_com | File Added: 43880_source_test_v3.patch | |
| Copyright © 2000 - 2009 MantisBT Group |

