diff -r 085c8aed0141 src/org/openbravo/retail/posterminal/utility/CheckApproval.java
--- a/src/org/openbravo/retail/posterminal/utility/CheckApproval.java	Sat Jul 02 11:16:16 2016 +0530
+++ b/src/org/openbravo/retail/posterminal/utility/CheckApproval.java	Tue Aug 02 05:04:10 2016 -0500
@@ -9,6 +9,8 @@
 
 package org.openbravo.retail.posterminal.utility;
 
+import java.util.List;
+
 import javax.servlet.ServletException;
 
 import org.codehaus.jettison.json.JSONArray;
@@ -20,6 +22,7 @@
 import org.openbravo.dal.service.OBDal;
 import org.openbravo.dal.service.OBQuery;
 import org.openbravo.erpCommon.utility.OBMessageUtils;
+import org.openbravo.erpCommon.utility.Utility;
 import org.openbravo.model.ad.access.User;
 import org.openbravo.model.ad.domain.Preference;
 import org.openbravo.retail.posterminal.JSONProcessSimple;
@@ -44,7 +47,9 @@
       OBCriteria<User> qUser = OBDal.getInstance().createCriteria(User.class);
       qUser.add(Restrictions.eq(User.PROPERTY_USERNAME, username));
       qUser.add(Restrictions.eq(User.PROPERTY_PASSWORD, FormatUtilities.sha1Base64(password)));
-      if (qUser.list().size() == 0) {
+      List<User> qUserList = qUser.list();
+
+      if (qUserList.size() == 0) {
         System.out.println();
         result.put("status", 1);
         JSONObject jsonError = new JSONObject();
@@ -55,6 +60,8 @@
         for (int i = 1; i < approvalType.length(); i++) {
           approvals = approvals + ",'" + approvalType.getString(i) + "'";
         }
+        String naturalTreeOrgList = Utility.getInStrSet(OBContext.getOBContext()
+            .getOrganizationStructureProvider(client).getNaturalTree(organization));
 
         String whereClause = "as p"
             + " where property IS NOT NULL "
@@ -65,16 +72,17 @@
             + "                  where r.role = p.visibleAtRole"
             + "                    and r.userContact = :user))"
             + "   and (p.visibleAtOrganization.id = :org " //
-            + "   or ad_isorgincluded(:org, p.visibleAtOrganization, :client) <> -1 "
+            + " or p.visibleAtOrganization.id in (:orgList) "
             + "   or p.visibleAtOrganization is null) ";
         OBQuery<Preference> qPreference = OBDal.getInstance().createQuery(Preference.class,
             whereClause);
 
-        qPreference.setNamedParameter("user", qUser.list().get(0));
+        qPreference.setNamedParameter("user", qUserList.get(0));
         qPreference.setNamedParameter("org", organization);
-        qPreference.setNamedParameter("client", client);
+        qPreference.setNamedParameter("orgList", naturalTreeOrgList);
+        List<Preference> qPerferenceList = qPreference.list();
 
-        if (qPreference.list().size() == 0) {
+        if (qPerferenceList.size() == 0) {
           result.put("status", 1);
           JSONObject jsonError = new JSONObject();
           jsonError.put("message", OBMessageUtils.getI18NMessage("OBPOS_UserCannotApprove", null));
@@ -84,13 +92,13 @@
           JSONObject jsonData = new JSONObject();
           JSONObject jsonPreference = new JSONObject();
           Integer c = 0;
-          for (Preference preference : qPreference.list()) {
+          for (Preference preference : qPerferenceList) {
             jsonPreference.put(preference.getProperty(), preference.getProperty());
             if (approvals.contains(preference.getProperty())) {
               c++;
             }
           }
-          jsonData.put("userId", qUser.list().get(0).getId());
+          jsonData.put("userId", qUserList.get(0).getId());
           jsonData.put("canApprove", c == approvalType.length());
           jsonData.put("preference", jsonPreference);
           result.put("data", jsonData);
