# HG changeset patch
# User Ranjith S R <ranjith@qualiantech.com>
# Date 1502871664 -19800
#      Wed Aug 16 13:51:04 2017 +0530
# Node ID 5c300f0ba007d325a363837448b210d448e8be4e
# Parent  f65c723100e8e9b44422ace63f1ec25b9223724b
Verifies issue 36625 : Added automated test 'I36625_VerifyCashupAmountToKeep'

diff -r f65c723100e8 -r 5c300f0ba007 src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/cashup/I36625_VerifyCashupAmountToKeep.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/cashup/I36625_VerifyCashupAmountToKeep.java	Wed Aug 16 13:51:04 2017 +0530
@@ -0,0 +1,202 @@
+/*
+ *************************************************************************
+ * 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) 2017 Openbravo S.L.U.
+ * All Rights Reserved.
+ * Contributor(s):
+ ************************************************************************
+ *
+ * @author RAN
+ *
+ */
+
+package org.openbravo.test.mobile.retail.pack.selenium.tests.cashup;
+
+import org.junit.Test;
+import org.openbravo.test.mobile.retail.mobilecore.javascript.BackboneHelper;
+import org.openbravo.test.mobile.retail.mobilecore.utils.ApplicationWindow;
+import org.openbravo.test.mobile.retail.pack.API.WebPOSAPI;
+import org.openbravo.test.mobile.retail.pack.selenium.TestIdPack;
+import org.openbravo.test.mobile.retail.pack.selenium.terminals.WebPOSTerminalHelper;
+
+public class I36625_VerifyCashupAmountToKeep extends WebPOSTerminalHelper {
+
+  @Test
+  public void test() {
+    // Do Cashup
+    WebPOSAPI.cleanCashup(this);
+
+    final String receipt1Price = "389.82", receipt2Price = "52.00", receipt3Price = "28.00";
+    final String layaway1Price = "25.00", layaway2Price = "17.00", layaway3Price = "25.00", layaway4Price = "50.00";
+    final String cashUpTotal1 = "389.82", cashUpTotal2 = "586.82";
+
+    // Receipt
+    createReceipt(receipt1Price);
+
+    // Layaway
+    final String layawayNo1 = createlayaway(layaway1Price);
+    final String layawayNo2 = createlayaway(layaway2Price);
+    final String layawayNo3 = createlayaway(layaway3Price);
+    final String layawayNo4 = createlayaway(layaway4Price);
+
+    // Cashup (Cash Amount to keep = 389.82)
+    {
+      tap(TestIdPack.BUTTON_MENU);
+      tap(TestIdPack.BUTTON_MENU_CASHUP);
+
+      // Step 1 - Count cash
+      verify(TestIdPack.LABEL_CASHUP_COUNTCASH_REMAINING, "-" + cashUpTotal1);
+      for (int i = 0; i < 7; i++) {
+        tap(TestIdPack.BUTTON_CASHUP_COUNTCASH_50);
+      }
+      tap(TestIdPack.BUTTON_CASHUP_COUNTCASH_20);
+      tap(TestIdPack.BUTTON_CASHUP_COUNTCASH_10);
+      tap(TestIdPack.BUTTON_CASHUP_COUNTCASH_5);
+      tap(TestIdPack.BUTTON_CASHUP_COUNTCASH_2);
+      tap(TestIdPack.BUTTON_CASHUP_COUNTCASH_2);
+      tap(TestIdPack.BUTTON_CASHUP_COUNTCASH_050);
+      tap(TestIdPack.BUTTON_CASHUP_COUNTCASH_020);
+      tap(TestIdPack.BUTTON_CASHUP_COUNTCASH_010);
+      tap(TestIdPack.BUTTON_CASHUP_COUNTCASH_002);
+      verify(TestIdPack.LABEL_CASHUP_COUNTCASH_COUNTED, cashUpTotal1);
+      verify(TestIdPack.LABEL_CASHUP_COUNTCASH_TOTAL, cashUpTotal1);
+      tap(TestIdPack.BUTTON_CASHUP_NEXT);
+
+      // Step 2
+      tap(TestIdPack.BUTTON_CASHUP_CASHUSA_OK);
+      tap(TestIdPack.BUTTON_CASHUP_VOUCHER_OK);
+      tap(TestIdPack.BUTTON_CASHUP_CARD_OK);
+      tap(TestIdPack.BUTTON_CASHUP_NEXT);
+
+      // Step 3
+      verify(TestIdPack.LABEL_CASHUP_KEEPTOTAL, "Total Amount of " + cashUpTotal1);
+      tap(TestIdPack.BUTTON_CASHUP_KEEPTOTAL);
+      tap(TestIdPack.BUTTON_CASHUP_NEXT);
+      tap(TestIdPack.BUTTON_CASHUP_KEEPNOTHING);
+      tap(TestIdPack.BUTTON_CASHUP_NEXT);
+      tap(TestIdPack.BUTTON_CASHUP_KEEPNOTHING);
+      tap(TestIdPack.BUTTON_CASHUP_NEXT);
+
+      // Step 4
+      tap(TestIdPack.BUTTON_CASHUP_POSTPRINTANDCLOSE);
+      // done
+      verify(TestIdPack.LABEL_POPUP_TITLE, "Good job!");
+      tap(TestIdPack.BUTTON_POPUP_OK);
+      waitUntilCertainWindowIsReached(ApplicationWindow.POINTOFSALE);
+      verify(TestIdPack.LABEL_TOTALTOPAY, "0.00");
+    }
+
+    // Pay Layaway using cash
+    completeLayaway(layawayNo1, layaway1Price);
+    completeLayaway(layawayNo2, layaway2Price);
+    completeLayaway(layawayNo3, layaway3Price);
+    completeLayaway(layawayNo4, layaway4Price);
+
+    // Receipt
+    createReceipt(receipt2Price);
+    createReceipt(receipt3Price);
+
+    // Cashup (Cash Amount to keep = 586.82)
+    {
+      tap(TestIdPack.BUTTON_MENU);
+      tap(TestIdPack.BUTTON_MENU_CASHUP);
+
+      // Step 1 - Count cash
+      verify(TestIdPack.LABEL_CASHUP_COUNTCASH_REMAINING, "-" + cashUpTotal2);
+      for (int i = 0; i < 11; i++) {
+        tap(TestIdPack.BUTTON_CASHUP_COUNTCASH_50);
+      }
+      tap(TestIdPack.BUTTON_CASHUP_COUNTCASH_20);
+      tap(TestIdPack.BUTTON_CASHUP_COUNTCASH_10);
+      tap(TestIdPack.BUTTON_CASHUP_COUNTCASH_5);
+      tap(TestIdPack.BUTTON_CASHUP_COUNTCASH_1);
+      tap(TestIdPack.BUTTON_CASHUP_COUNTCASH_050);
+      tap(TestIdPack.BUTTON_CASHUP_COUNTCASH_020);
+      tap(TestIdPack.BUTTON_CASHUP_COUNTCASH_010);
+      tap(TestIdPack.BUTTON_CASHUP_COUNTCASH_002);
+      verify(TestIdPack.LABEL_CASHUP_COUNTCASH_COUNTED, cashUpTotal2);
+      verify(TestIdPack.LABEL_CASHUP_COUNTCASH_TOTAL, cashUpTotal2);
+      tap(TestIdPack.BUTTON_CASHUP_NEXT);
+
+      // Step 2
+      tap(TestIdPack.BUTTON_CASHUP_CASHUSA_OK);
+      tap(TestIdPack.BUTTON_CASHUP_VOUCHER_OK);
+      tap(TestIdPack.BUTTON_CASHUP_CARD_OK);
+      tap(TestIdPack.BUTTON_CASHUP_NEXT);
+
+      // Step 3
+      verify(TestIdPack.LABEL_CASHUP_KEEPTOTAL, "Total Amount of " + cashUpTotal2);
+      tap(TestIdPack.BUTTON_CASHUP_KEEPTOTAL);
+      tap(TestIdPack.BUTTON_CASHUP_NEXT);
+      tap(TestIdPack.BUTTON_CASHUP_KEEPNOTHING);
+      tap(TestIdPack.BUTTON_CASHUP_NEXT);
+      tap(TestIdPack.BUTTON_CASHUP_KEEPNOTHING);
+      tap(TestIdPack.BUTTON_CASHUP_NEXT);
+
+      // Step 4
+      tap(TestIdPack.BUTTON_CASHUP_POSTPRINTANDCLOSE);
+      // done
+      verify(TestIdPack.LABEL_POPUP_TITLE, "Good job!");
+      tap(TestIdPack.BUTTON_POPUP_OK);
+      waitUntilCertainWindowIsReached(ApplicationWindow.POINTOFSALE);
+      verify(TestIdPack.LABEL_TOTALTOPAY, "0.00");
+    }
+  }
+
+  private String addProductWithPrice(final String price) {
+    tap(TestIdPack.BUTTON_BROWSE);
+    tap(TestIdPack.BUTTON_CATEGORY_BACKPACKSANDTRAVEL);
+    tap(TestIdPack.BUTTON_PRODUCT_BACKPACKSANDTRAVEL_ADHESIVEBODYWARNMERS);
+
+    tap(TestIdPack.BUTTON_RECEIPT_ROW1);
+    write(TestIdPack.INPUT_POINTOFSALE, price);
+    tap(TestIdPack.BUTTON_KEYPAD_PRICE);
+    verify(TestIdPack.LABEL_TOTALTOPAY, price);
+
+    return BackboneHelper.getDocumentNo();
+  }
+
+  private String createReceipt(final String price) {
+    final String receiptNo = addProductWithPrice(price);
+    tap(TestIdPack.BUTTON_PAY);
+    tap(TestIdPack.BUTTON_PAY_EXACT);
+    tap(TestIdPack.BUTTON_PAY_DONE);
+    verify(TestIdPack.LABEL_TOTALTOPAY, "0.00");
+    return receiptNo;
+  }
+
+  private String createlayaway(final String price) {
+    tap(TestIdPack.BUTTON_MENU);
+    tap(TestIdPack.BUTTON_MENU_LAYAWAYTHISRECEIPT);
+    final String layawayNo = addProductWithPrice(price);
+    tap(TestIdPack.BUTTON_PAY);
+    tap(TestIdPack.BUTTON_LAYAWAY);
+    verify(TestIdPack.LABEL_TOTALTOPAY, "0.00");
+    return layawayNo;
+  }
+
+  private void completeLayaway(final String layawayNo, final String price) {
+    // Open layaway
+    tap(TestIdPack.BUTTON_MENU);
+    tap(TestIdPack.BUTTON_MENU_LAYAWAYS);
+    write(TestIdPack.FIELD_SEARCH_RECEIPT, layawayNo);
+    tap(TestIdPack.BUTTON_LAYAWAYS_SEARCH);
+    tap(TestIdPack.BUTTON_LAYAWAYS_ROW1);
+    verify(TestIdPack.LABEL_TOTALTOPAY, price);
+
+    tap(TestIdPack.BUTTON_PAY);
+    tap(TestIdPack.BUTTON_PAY_EXACT);
+    tap(TestIdPack.BUTTON_PAY_DONE);
+    verify(TestIdPack.LABEL_TOTALTOPAY, "0.00");
+  }
+}
\ No newline at end of file
