diff -r 7da92b3ab859 -r 94daa988d589 src-test/org/openbravo/test/mobile/common/selenium/javascript/TestId.java
--- a/src-test/org/openbravo/test/mobile/common/selenium/javascript/TestId.java	Fri May 22 18:25:44 2015 +0200
+++ b/src-test/org/openbravo/test/mobile/common/selenium/javascript/TestId.java	Fri Jun 05 08:57:02 2015 +0200
@@ -400,6 +400,9 @@
   LABEL_CASHUP_STEP3_TITLE("listPaymentMethods_control6"), //
   LABEL_CASHUP_STEP4_TITLE("cashToKeep_cashtokeepheader"), //
   LABEL_CASHUP_STEP5_TITLE("postPrintClose_control5"), //
+  BUTTON_CASHUP_DELETE_ORDER("pendingReceiptList_row1_buttonVoid", EnyoKind.BUTTON), //
+  BUTTON_CASHUP_DELETE_ALL_ORDER("listPendingReceipts_btnDeleteAll", EnyoKind.BUTTON), //
+  BUTTON_CASHUP_DELETE_ORDER_YES("confirmationPopup_btnYes, delete", EnyoKind.BUTTON), //
   // Step 2
   BUTTON_CASHUP_COUNTCASH_010("paymentsList_row4_qtyplus", EnyoKind.BUTTON), //
   BUTTON_CASHUP_COUNTCASH_020("paymentsList_row5_qtyplus", EnyoKind.BUTTON), //
diff -r 7da92b3ab859 -r 94daa988d589 src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/deleteTicket/DeleteTicket.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/deleteTicket/DeleteTicket.java	Fri Jun 05 08:57:02 2015 +0200
@@ -0,0 +1,376 @@
+/*
+ *************************************************************************
+ * 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) 2015 Openbravo S.L.U.
+ * All Rights Reserved.
+ * Contributor(s):
+ ************************************************************************
+ *
+ *
+ */
+
+package org.openbravo.test.mobile.retail.pack.selenium.tests.deleteTicket;
+
+import static org.junit.Assert.assertEquals;
+
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+import org.junit.Test;
+import org.openbravo.test.mobile.common.selenium.database.DatabaseHelperSelect;
+import org.openbravo.test.mobile.common.selenium.javascript.TestId;
+import org.openbravo.test.mobile.common.selenium.terminals.WebPOSTerminalHelper;
+import org.openbravo.test.mobile.common.selenium.utils.Constants;
+import org.openbravo.test.mobile.common.selenium.utils.Utils;
+
+public class DeleteTicket extends WebPOSTerminalHelper {
+
+  @Test
+  public void test() {
+    // Create a ticket without discounts and delete
+    tap(TestId.BUTTON_BROWSE);
+    tap(TestId.BUTTON_CATEGORY_BESTSELLERS);
+    tap(TestId.BUTTON_PRODUCT_BESTSELLERS_AVALANCHETRANSCEIVER);
+    tap(TestId.BUTTON_PRODUCT_BESTSELLERS_AVALANCHETRANSCEIVER);
+    String documentno = get(TestId.LABEL_DOCUMENTNUMBER);
+    tap(TestId.BUTTON_DELETERECEIPT);
+    tap(TestId.BUTTON_DELETERECEIPT_CONFIRM);
+    verifyDelete(documentno);
+
+    // Create a ticket with discounts and delete
+    tap(TestId.BUTTON_BROWSE);
+    tap(TestId.BUTTON_CATEGORY_BESTSELLERS);
+    tap(TestId.BUTTON_PRODUCT_BESTSELLERS_AVALANCHETRANSCEIVER);
+    tap(TestId.BUTTON_PRODUCT_BESTSELLERS_AVALANCHETRANSCEIVER);
+    tap(TestId.BUTTON_MENU);
+    tap(TestId.BUTTON_MENU_RECEIPTDISCOUNTS);
+    tap(TestId.BUTTON_RECEIPTDISCOUNTS_CHECKAPPLYALL);
+    tap(TestId.BUTTON_RECEIPTDISCOUNTS_APPLY);
+    documentno = get(TestId.LABEL_DOCUMENTNUMBER);
+    tap(TestId.BUTTON_DELETERECEIPT);
+    tap(TestId.BUTTON_DELETERECEIPT_CONFIRM);
+    verifyDelete(documentno);
+
+    String VBSUri = Utils.getCurrentHref();
+    String PSUri = VBSUri.replace(getTerminal(), "PS-1");
+
+    // navigate to PS
+    Utils.navigate(PSUri, false);
+    login("demouser");
+    // Create a ticket without discounts and delete
+    tap(TestId.BUTTON_BROWSE);
+    tap(TestId.BUTTON_CATEGORY_BACKPACKSANDTRAVEL);
+    tap(TestId.BUTTON_PRODUCT_BACKPACKSANDTRAVEL_ADHESIVEBODYWARNMERS);
+    tap(TestId.BUTTON_PRODUCT_BACKPACKSANDTRAVEL_ADHESIVEBODYWARNMERS);
+    documentno = get(TestId.LABEL_DOCUMENTNUMBER);
+    tap(TestId.BUTTON_DELETERECEIPT);
+    tap(TestId.BUTTON_DELETERECEIPT_CONFIRM);
+    Utils.pause(2000);
+    verifyDelete(documentno);
+
+    // Create a ticket with discounts and delete
+    tap(TestId.BUTTON_BROWSE);
+    tap(TestId.BUTTON_CATEGORY_BACKPACKSANDTRAVEL);
+    tap(TestId.BUTTON_PRODUCT_BACKPACKSANDTRAVEL_ADHESIVEBODYWARNMERS);
+    tap(TestId.BUTTON_PRODUCT_BACKPACKSANDTRAVEL_ADHESIVEBODYWARNMERS);
+    tap(TestId.BUTTON_MENU);
+    tap(TestId.BUTTON_MENU_RECEIPTDISCOUNTS);
+    tap(TestId.BUTTON_RECEIPTDISCOUNTS_CHECKAPPLYALL);
+    tap(TestId.BUTTON_RECEIPTDISCOUNTS_APPLY);
+    documentno = get(TestId.LABEL_DOCUMENTNUMBER);
+    tap(TestId.BUTTON_DELETERECEIPT);
+    tap(TestId.BUTTON_DELETERECEIPT_CONFIRM);
+    Utils.pause(2000);
+    verifyDelete(documentno);
+
+    VBSUri = Utils.getCurrentHref();
+    PSUri = VBSUri.replace("PS-1", "VBS1001");
+    Utils.navigate(PSUri, false);
+    login("vallblanca");
+  }
+
+  // It is the same case of test1 but this time instead of pressing delete ticket button the test is
+  // going to delete the ticket using delete button in window cash up
+  @Test
+  public void test2() {
+    // Create a ticket without discounts and delete
+    tap(TestId.BUTTON_BROWSE);
+    tap(TestId.BUTTON_CATEGORY_BESTSELLERS);
+    tap(TestId.BUTTON_PRODUCT_BESTSELLERS_AVALANCHETRANSCEIVER);
+    tap(TestId.BUTTON_PRODUCT_BESTSELLERS_AVALANCHETRANSCEIVER);
+    String documentno = get(TestId.LABEL_DOCUMENTNUMBER);
+    tap(TestId.BUTTON_MENU);
+    tap(TestId.BUTTON_MENU_CASHUP);
+    tap(TestId.BUTTON_CASHUP_DELETE_ORDER);
+    tap(TestId.BUTTON_CASHUP_DELETE_ORDER_YES);
+    tap(TestId.BUTTON_CASHMANAGEMENT_CANCEL);
+    verifyDelete(documentno);
+
+    // // Create a ticket with discounts and delete
+    tap(TestId.BUTTON_BROWSE);
+    tap(TestId.BUTTON_CATEGORY_BESTSELLERS);
+    tap(TestId.BUTTON_PRODUCT_BESTSELLERS_AVALANCHETRANSCEIVER);
+    tap(TestId.BUTTON_PRODUCT_BESTSELLERS_AVALANCHETRANSCEIVER);
+    tap(TestId.BUTTON_MENU);
+    tap(TestId.BUTTON_MENU_RECEIPTDISCOUNTS);
+    tap(TestId.BUTTON_RECEIPTDISCOUNTS_CHECKAPPLYALL);
+    tap(TestId.BUTTON_RECEIPTDISCOUNTS_APPLY);
+    documentno = get(TestId.LABEL_DOCUMENTNUMBER);
+    tap(TestId.BUTTON_MENU);
+    tap(TestId.BUTTON_MENU_CASHUP);
+    tap(TestId.BUTTON_CASHUP_DELETE_ORDER);
+    verify(TestId.LABEL_POPUP_TITLE, "Confirm Deletion");
+    tap(TestId.BUTTON_CASHUP_DELETE_ORDER_YES);
+    tap(TestId.BUTTON_CASHMANAGEMENT_CANCEL);
+    verifyDelete(documentno);
+    String VBSUri = Utils.getCurrentHref();
+    String PSUri = VBSUri.replace(getTerminal(), "PS-1");
+
+    // navigate to PS
+    Utils.navigate(PSUri, false);
+    login("demouser");
+    // Create a ticket without discounts and delete
+    tap(TestId.BUTTON_BROWSE);
+    tap(TestId.BUTTON_CATEGORY_BACKPACKSANDTRAVEL);
+    tap(TestId.BUTTON_PRODUCT_BACKPACKSANDTRAVEL_ADHESIVEBODYWARNMERS);
+    tap(TestId.BUTTON_PRODUCT_BACKPACKSANDTRAVEL_ADHESIVEBODYWARNMERS);
+    documentno = get(TestId.LABEL_DOCUMENTNUMBER);
+    tap(TestId.BUTTON_MENU);
+    tap(TestId.BUTTON_MENU_CASHUP);
+    tap(TestId.BUTTON_CASHUP_DELETE_ORDER);
+    tap(TestId.BUTTON_CASHUP_DELETE_ORDER_YES);
+    tap(TestId.BUTTON_CASHMANAGEMENT_CANCEL);
+    verifyDelete(documentno);
+
+    // Create a ticket with discounts and delete
+    tap(TestId.BUTTON_BROWSE);
+    tap(TestId.BUTTON_CATEGORY_BACKPACKSANDTRAVEL);
+    tap(TestId.BUTTON_PRODUCT_BACKPACKSANDTRAVEL_ADHESIVEBODYWARNMERS);
+    tap(TestId.BUTTON_PRODUCT_BACKPACKSANDTRAVEL_ADHESIVEBODYWARNMERS);
+    tap(TestId.BUTTON_MENU);
+    tap(TestId.BUTTON_MENU_RECEIPTDISCOUNTS);
+    tap(TestId.BUTTON_RECEIPTDISCOUNTS_CHECKAPPLYALL);
+    tap(TestId.BUTTON_RECEIPTDISCOUNTS_APPLY);
+    documentno = get(TestId.LABEL_DOCUMENTNUMBER);
+    tap(TestId.BUTTON_MENU);
+    tap(TestId.BUTTON_MENU_CASHUP);
+    tap(TestId.BUTTON_CASHUP_DELETE_ORDER);
+    verify(TestId.LABEL_POPUP_TITLE, "Confirm Deletion");
+    tap(TestId.BUTTON_CASHUP_DELETE_ORDER_YES);
+    tap(TestId.BUTTON_CASHMANAGEMENT_CANCEL);
+    verifyDelete(documentno);
+
+    VBSUri = Utils.getCurrentHref();
+    PSUri = VBSUri.replace("PS-1", "VBS1001");
+    Utils.navigate(PSUri, false);
+    login("vallblanca");
+  }
+
+  // It is the same case of test1 but this time instead of pressing delete ticket button the test is
+  // going to delete the ticket using delete all button in window cash up
+  @Test
+  public void test3() {
+    // Create a ticket without discounts and delete
+    tap(TestId.BUTTON_BROWSE);
+    tap(TestId.BUTTON_CATEGORY_BESTSELLERS);
+    tap(TestId.BUTTON_PRODUCT_BESTSELLERS_AVALANCHETRANSCEIVER);
+    tap(TestId.BUTTON_PRODUCT_BESTSELLERS_AVALANCHETRANSCEIVER);
+    String documentno = get(TestId.LABEL_DOCUMENTNUMBER);
+    tap(TestId.BUTTON_MENU);
+    tap(TestId.BUTTON_MENU_CASHUP);
+    tap(TestId.BUTTON_CASHUP_DELETE_ALL_ORDER);
+    tap(TestId.BUTTON_CASHUP_DELETE_ORDER_YES);
+    tap(TestId.BUTTON_CASHMANAGEMENT_CANCEL);
+    verifyDelete(documentno);
+
+    // Create a ticket with discounts and delete
+    tap(TestId.BUTTON_BROWSE);
+    tap(TestId.BUTTON_CATEGORY_BESTSELLERS);
+    tap(TestId.BUTTON_PRODUCT_BESTSELLERS_AVALANCHETRANSCEIVER);
+    tap(TestId.BUTTON_PRODUCT_BESTSELLERS_AVALANCHETRANSCEIVER);
+    tap(TestId.BUTTON_MENU);
+    tap(TestId.BUTTON_MENU_RECEIPTDISCOUNTS);
+    tap(TestId.BUTTON_RECEIPTDISCOUNTS_CHECKAPPLYALL);
+    tap(TestId.BUTTON_RECEIPTDISCOUNTS_APPLY);
+    documentno = get(TestId.LABEL_DOCUMENTNUMBER);
+    tap(TestId.BUTTON_MENU);
+    tap(TestId.BUTTON_MENU_CASHUP);
+    tap(TestId.BUTTON_CASHUP_DELETE_ALL_ORDER);
+    verify(TestId.LABEL_POPUP_TITLE, "Confirm Deletion");
+    tap(TestId.BUTTON_CASHUP_DELETE_ORDER_YES);
+    tap(TestId.BUTTON_CASHMANAGEMENT_CANCEL);
+    verifyDelete(documentno);
+    String VBSUri = Utils.getCurrentHref();
+    String PSUri = VBSUri.replace(getTerminal(), "PS-1");
+
+    // navigate to PS
+    Utils.navigate(PSUri, false);
+    login("demouser");
+    // Create a ticket without discounts and delete
+    tap(TestId.BUTTON_BROWSE);
+    tap(TestId.BUTTON_CATEGORY_BACKPACKSANDTRAVEL);
+    tap(TestId.BUTTON_PRODUCT_BACKPACKSANDTRAVEL_ADHESIVEBODYWARNMERS);
+    tap(TestId.BUTTON_PRODUCT_BACKPACKSANDTRAVEL_ADHESIVEBODYWARNMERS);
+    documentno = get(TestId.LABEL_DOCUMENTNUMBER);
+    tap(TestId.BUTTON_MENU);
+    tap(TestId.BUTTON_MENU_CASHUP);
+    tap(TestId.BUTTON_CASHUP_DELETE_ALL_ORDER);
+    tap(TestId.BUTTON_CASHUP_DELETE_ORDER_YES);
+    tap(TestId.BUTTON_CASHMANAGEMENT_CANCEL);
+    verifyDelete(documentno);
+
+    // Create a ticket with discounts and delete
+    tap(TestId.BUTTON_BROWSE);
+    tap(TestId.BUTTON_CATEGORY_BACKPACKSANDTRAVEL);
+    tap(TestId.BUTTON_PRODUCT_BACKPACKSANDTRAVEL_ADHESIVEBODYWARNMERS);
+    tap(TestId.BUTTON_PRODUCT_BACKPACKSANDTRAVEL_ADHESIVEBODYWARNMERS);
+    tap(TestId.BUTTON_MENU);
+    tap(TestId.BUTTON_MENU_RECEIPTDISCOUNTS);
+    tap(TestId.BUTTON_RECEIPTDISCOUNTS_CHECKAPPLYALL);
+    tap(TestId.BUTTON_RECEIPTDISCOUNTS_APPLY);
+    documentno = get(TestId.LABEL_DOCUMENTNUMBER);
+    tap(TestId.BUTTON_MENU);
+    tap(TestId.BUTTON_MENU_CASHUP);
+    tap(TestId.BUTTON_CASHUP_DELETE_ALL_ORDER);
+    verify(TestId.LABEL_POPUP_TITLE, "Confirm Deletion");
+    tap(TestId.BUTTON_CASHUP_DELETE_ORDER_YES);
+    tap(TestId.BUTTON_CASHMANAGEMENT_CANCEL);
+    verifyDelete(documentno);
+
+    VBSUri = Utils.getCurrentHref();
+    PSUri = VBSUri.replace("PS-1", "VBS1001");
+    Utils.navigate(PSUri, false);
+    login("vallblanca");
+  }
+
+  // It is the same case of test1 but this time instead of pressing delete ticket button the test is
+  // going to logout from Web POS
+  @Test
+  public void test4() {
+    // Create a ticket without discounts and delete
+    tap(TestId.BUTTON_BROWSE);
+    tap(TestId.BUTTON_CATEGORY_BESTSELLERS);
+    tap(TestId.BUTTON_PRODUCT_BESTSELLERS_AVALANCHETRANSCEIVER);
+    tap(TestId.BUTTON_PRODUCT_BESTSELLERS_AVALANCHETRANSCEIVER);
+    String documentno = get(TestId.LABEL_DOCUMENTNUMBER);
+    tap(TestId.BUTTON_MENU);
+    tap(TestId.BUTTON_MENU_ONLINE);
+    tap(TestId.BUTTON_ENDSESSION);
+    tap(TestId.BUTTON_LOGOUT);
+    login("vallblanca");
+    verifyDelete(documentno);
+
+    // Create a ticket with discounts and delete
+    tap(TestId.BUTTON_BROWSE);
+    tap(TestId.BUTTON_CATEGORY_BESTSELLERS);
+    tap(TestId.BUTTON_PRODUCT_BESTSELLERS_AVALANCHETRANSCEIVER);
+    tap(TestId.BUTTON_PRODUCT_BESTSELLERS_AVALANCHETRANSCEIVER);
+    tap(TestId.BUTTON_MENU);
+    tap(TestId.BUTTON_MENU_RECEIPTDISCOUNTS);
+    tap(TestId.BUTTON_RECEIPTDISCOUNTS_CHECKAPPLYALL);
+    tap(TestId.BUTTON_RECEIPTDISCOUNTS_APPLY);
+    documentno = get(TestId.LABEL_DOCUMENTNUMBER);
+    tap(TestId.BUTTON_MENU);
+    tap(TestId.BUTTON_MENU_ONLINE);
+    tap(TestId.BUTTON_ENDSESSION);
+    tap(TestId.BUTTON_LOGOUT);
+    login("vallblanca");
+    verifyDelete(documentno);
+    String VBSUri = Utils.getCurrentHref();
+    String PSUri = VBSUri.replace(getTerminal(), "PS-1");
+
+    // navigate to PS
+    Utils.navigate(PSUri, false);
+    login("demouser");
+    // Create a ticket without discounts and delete
+    tap(TestId.BUTTON_BROWSE);
+    tap(TestId.BUTTON_CATEGORY_BACKPACKSANDTRAVEL);
+    tap(TestId.BUTTON_PRODUCT_BACKPACKSANDTRAVEL_ADHESIVEBODYWARNMERS);
+    tap(TestId.BUTTON_PRODUCT_BACKPACKSANDTRAVEL_ADHESIVEBODYWARNMERS);
+    documentno = get(TestId.LABEL_DOCUMENTNUMBER);
+    tap(TestId.BUTTON_MENU);
+    tap(TestId.BUTTON_MENU_ONLINE);
+    tap(TestId.BUTTON_ENDSESSION);
+    tap(TestId.BUTTON_LOGOUT);
+    login("demouser");
+    verifyDelete(documentno);
+
+    // Create a ticket with discounts and delete
+    tap(TestId.BUTTON_BROWSE);
+    tap(TestId.BUTTON_CATEGORY_BACKPACKSANDTRAVEL);
+    tap(TestId.BUTTON_PRODUCT_BACKPACKSANDTRAVEL_ADHESIVEBODYWARNMERS);
+    tap(TestId.BUTTON_PRODUCT_BACKPACKSANDTRAVEL_ADHESIVEBODYWARNMERS);
+    tap(TestId.BUTTON_MENU);
+    tap(TestId.BUTTON_MENU_RECEIPTDISCOUNTS);
+    tap(TestId.BUTTON_RECEIPTDISCOUNTS_CHECKAPPLYALL);
+    tap(TestId.BUTTON_RECEIPTDISCOUNTS_APPLY);
+    documentno = get(TestId.LABEL_DOCUMENTNUMBER);
+    tap(TestId.BUTTON_MENU);
+    tap(TestId.BUTTON_MENU_ONLINE);
+    tap(TestId.BUTTON_ENDSESSION);
+    tap(TestId.BUTTON_LOGOUT);
+    login("demouser");
+    verifyDelete(documentno);
+
+    VBSUri = Utils.getCurrentHref();
+    PSUri = VBSUri.replace("PS-1", "VBS1001");
+    Utils.navigate(PSUri, false);
+    login("vallblanca");
+  }
+
+  private void verifyDelete(final String documentNo) {
+
+    String[] documentNoWithoutTime = documentNo.split(".*- ");
+    final String sql = "select o.em_obpos_isdeleted headerDeleted, "
+        + "ol.em_obpos_isdeleted lineDeleted, ol.em_obpos_qtydeleted, "
+        + "o.grandtotal, o.totallines, o.docstatus, amtoffer "
+        + "from c_order o, c_orderline ol left join (select sum(amtoffer) amtoffer,olo.c_orderline_id "
+        + "from c_orderline_offer olo group by olo.c_orderline_id) as offer on ol.c_orderline_id = offer.c_orderline_id "
+        + "where o.c_order_id = ol.c_order_id " + "and documentno = '"
+        + documentNoWithoutTime[1].trim() + "'";
+
+    new DatabaseHelperSelect() {
+      @Override
+      protected void yieldResultSet(final ResultSet rs) throws SQLException {
+        logger.info("Verifying deleted ticket in the backend");
+        final String header = rs.getString("headerDeleted");
+        final String line = rs.getString("lineDeleted");
+        final String qtyDeleted = rs.getString("em_obpos_qtydeleted");
+        final String totlaLines = rs.getString("totallines");
+        final String grandTotal = rs.getString("grandtotal");
+        final String docstatus = rs.getString("docstatus");
+        final String amtOffer = rs.getString("amtoffer");
+
+        assertEquals("Y", header);
+        assertEquals("Y", line);
+        assertEquals("2", qtyDeleted);
+        assertEquals("0", totlaLines);
+        assertEquals("0", grandTotal);
+        assertEquals("CL", docstatus);
+        if (amtOffer != null) {
+          assertEquals("0", amtOffer);
+        }
+      }
+    }.execute(sql, 1);
+  }
+
+  private void login(final String newUsername) {
+    TestId.LABEL_LOGIN_OPENBRAVOMOBILE.enyoNode().waitUntilIsReady();
+    Utils.pause(Constants.WAIT_AFTERWEBPOSLOGO);
+    write(TestId.FIELD_LOGIN_USERNAME, newUsername);
+    write(TestId.FIELD_LOGIN_PASSWORD, "openbravo");
+    tap(TestId.BUTTON_LOGIN);
+    Utils.pause(Constants.WAIT_AFTERSUCCESSFULLOGIN);
+    TestId.TABLE_PRODUCTS.enyoNode().waitUntilIsReady();
+  }
+}
