# HG changeset patch
# User Ranjith S R <ranjith@qualiantech.com>
# Date 1563874411 -19800
#      Tue Jul 23 15:03:31 2019 +0530
# Node ID 73f104514b036bf227ce7dd541e8bfdb9b28e07d
# Parent  21ee131d6b4b3281a3b255b58a2b1ab8faf6da70
Verifies issue 41097 : Added automated test 'I41097_VerifyManualAndTotalDiscounts'

diff -r 21ee131d6b4b -r 73f104514b03 src-test/org/openbravo/test/mobile/retail/extmodules/selenium/tests/discounts_bytotal/I41097_VerifyManualAndTotalDiscounts.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src-test/org/openbravo/test/mobile/retail/extmodules/selenium/tests/discounts_bytotal/I41097_VerifyManualAndTotalDiscounts.java	Tue Jul 23 15:03:31 2019 +0530
@@ -0,0 +1,153 @@
+/*
+ *************************************************************************
+ * 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;
+import org.openbravo.test.mobile.retail.mobilecore.database.DatabaseHelperInsertUpdateOrDelete;
+
+public class I41097_VerifyManualAndTotalDiscounts extends WebPOSExtModulesTerminalHelper {
+  final String PRODUCT_NAME_1 = "Avalanche transceiver";
+  final String PRODUCT_NAME_2 = "GPS Handheld";
+  final String PRODUCT_NAME_3 = "Headlamp ultralight";
+  final String VAR_DISCOUNT_AMT_NAME = "disc_5_var_euro";
+  final String VAR_TOTALDISCOUNT_PER_NAME = "Variable Percentage Discount By Total - %s";
+  final String VAR_TOTALDISCOUNT_AMT_NAME = "Variable Amount Discount By Total - %s EUR";
+  final String FIXED_PERCENTAGE_GPS10_ID = "C26B841C84B14FE2AB1A334DD3672E87";
+
+  @Test
+  public void test() {
+    // Case 1 - Add Manual and Total discount
+    addProduct();
+
+    // Add Manual Discount
+    prepareManualPromotionsToApply(8);
+    tap(TestIdExtModules.BUTTON_RECEIPT_ROW2_CHECKBOX);
+    tap(TestIdExtModules.BUTTON_RECEIPTDISCOUNTS_APPLY);
+    verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTNAME, "-- " + VAR_DISCOUNT_AMT_NAME);
+    verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTAMOUNT, "-5.00");
+    verify(TestIdExtModules.LABEL_TOTALTOPAY, "436.40");
+
+    // Add Total Discount
+    prepareManualPromotionsToApply(6);
+    tap(TestIdExtModules.BUTTON_KEYPAD_5);
+    tap(TestIdExtModules.BUTTON_KEYPAD_0);
+    tap(TestIdExtModules.BUTTON_KEYPAD_ENTER);
+    tap(TestIdExtModules.BUTTON_RECEIPTDISCOUNTS_APPLY);
+    verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTNAME,
+        "-- " + String.format(VAR_TOTALDISCOUNT_PER_NAME, 50) + "%");
+    verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTAMOUNT, "-75.25");
+    verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTNAME, "-- " + VAR_DISCOUNT_AMT_NAME);
+    verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTAMOUNT, "-5.00");
+    verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTNAME2,
+        "-- " + String.format(VAR_TOTALDISCOUNT_PER_NAME, 50) + "%");
+    verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTAMOUNT2, "-142.95");
+    verify(TestIdExtModules.LABEL_TOTALTOPAY, "218.20");
+
+    // Add Same Total Manual Discount with different amount and without override
+    prepareManualPromotionsToApply(8);
+    tap(TestIdExtModules.BUTTON_RECEIPT_ROW2_CHECKBOX);
+    tap(TestIdExtModules.BUTTON_KEYPAD_6);
+    tap(TestIdExtModules.BUTTON_KEYPAD_ENTER);
+    tap(TestIdExtModules.BUTTON_RECEIPTDISCOUNTS_OVERRIDE);
+    tap(TestIdExtModules.BUTTON_RECEIPTDISCOUNTS_APPLY);
+    verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTNAME,
+        "-- " + String.format(VAR_TOTALDISCOUNT_PER_NAME, 50) + "%");
+    verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTAMOUNT, "-75.25");
+    verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTNAME, "-- " + VAR_DISCOUNT_AMT_NAME);
+    verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTAMOUNT, "-6.00");
+    verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTNAME2,
+        "-- " + String.format(VAR_TOTALDISCOUNT_PER_NAME, 50) + "%");
+    verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTAMOUNT2, "-142.45");
+    verify(TestIdExtModules.LABEL_TOTALTOPAY, "217.70");
+
+    tap(TestIdExtModules.BUTTON_DELETERECEIPT);
+    tap(TestIdExtModules.BUTTON_DELETERECEIPT_CONFIRM);
+    verify(TestIdExtModules.LABEL_TOTALTOPAY, "0.00");
+
+    // Case 2 - Add Total discount
+    addProduct();
+    tap(TestIdExtModules.BUTTON_SEARCH);
+    write(TestIdExtModules.FIELD_SEARCH_TEXT, PRODUCT_NAME_3);
+    TestIdExtModules.FIELD_SEARCH_TEXT.enyoNode().executeExtension(".waterfall('onchange')");
+    tap(TestIdExtModules.BUTTON_SEARCH_EXECUTE);
+    tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+    verify(TestIdExtModules.LABEL_TOTALTOPAY, "460.30");
+    // Add Total Discount
+    prepareManualPromotionsToApply(5);
+    tap(TestIdExtModules.BUTTON_KEYPAD_ENTER);
+    tap(TestIdExtModules.BUTTON_RECEIPTDISCOUNTS_APPLY);
+    verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTNAME,
+        "-- " + String.format(VAR_TOTALDISCOUNT_AMT_NAME, 23));
+    verify(TestIdExtModules.LABEL_RECEIPT_ROW1_DISCOUNTAMOUNT, "-7.52");
+    verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTNAME,
+        "-- " + String.format(VAR_TOTALDISCOUNT_AMT_NAME, 23));
+    verify(TestIdExtModules.LABEL_RECEIPT_ROW2_DISCOUNTAMOUNT, "-14.54");
+    verify(TestIdExtModules.LABEL_RECEIPT_ROW3_DISCOUNTNAME,
+        "-- " + String.format(VAR_TOTALDISCOUNT_AMT_NAME, 23));
+    verify(TestIdExtModules.LABEL_RECEIPT_ROW3_DISCOUNTAMOUNT, "-0.94");
+    verify(TestIdExtModules.LABEL_TOTALTOPAY, "437.30");
+
+    tap(TestIdExtModules.BUTTON_DELETERECEIPT);
+    tap(TestIdExtModules.BUTTON_DELETERECEIPT_CONFIRM);
+    verify(TestIdExtModules.LABEL_TOTALTOPAY, "0.00");
+  }
+
+  private void prepareManualPromotionsToApply(int promotionPositionInCombo) {
+    tap(TestIdExtModules.BUTTON_MENU);
+    tap(TestIdExtModules.BUTTON_MENU_RECEIPTDISCOUNTS);
+    selectDiscountCombo(promotionPositionInCombo);
+  }
+
+  private void addProduct() {
+    tap(TestIdExtModules.BUTTON_SEARCH);
+    write(TestIdExtModules.FIELD_SEARCH_TEXT, PRODUCT_NAME_1);
+    TestIdExtModules.FIELD_SEARCH_TEXT.enyoNode().executeExtension(".waterfall('onchange')");
+    tap(TestIdExtModules.BUTTON_SEARCH_EXECUTE);
+    tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+    verify(TestIdExtModules.LABEL_TOTALTOPAY, "150.50");
+    tap(TestIdExtModules.BUTTON_SEARCH);
+    write(TestIdExtModules.FIELD_SEARCH_TEXT, PRODUCT_NAME_2);
+    TestIdExtModules.FIELD_SEARCH_TEXT.enyoNode().executeExtension(".waterfall('onchange')");
+    tap(TestIdExtModules.BUTTON_SEARCH_EXECUTE);
+    tap(TestIdExtModules.BUTTON_SEARCHPRODUCT_FIRSTROW);
+    verify(TestIdExtModules.LABEL_TOTALTOPAY, "441.40");
+  }
+
+  @Override
+  public void beforeWithReload() {
+    setActiveDiscount(true);
+  }
+
+  @Override
+  public void afterWithReload() {
+    setActiveDiscount(false);
+  }
+
+  private void setActiveDiscount(final boolean isForTest) {
+    String sql = String.format("update m_offer set isactive = '%s' where m_offer_id = '%s'",
+        isForTest ? "N" : "Y", FIXED_PERCENTAGE_GPS10_ID);
+    new DatabaseHelperInsertUpdateOrDelete().execute(sql, 1);
+  }
+}
