diff --git a/src/org/openbravo/retail/posterminal/ExternalOrderLoader.java b/src/org/openbravo/retail/posterminal/ExternalOrderLoader.java
--- a/src/org/openbravo/retail/posterminal/ExternalOrderLoader.java
+++ b/src/org/openbravo/retail/posterminal/ExternalOrderLoader.java
@@ -38,6 +38,7 @@
 import org.openbravo.client.kernel.RequestContext;
 import org.openbravo.dal.core.OBContext;
 import org.openbravo.dal.core.SessionHandler;
+import org.openbravo.dal.security.OrganizationStructureProvider;
 import org.openbravo.dal.service.OBDal;
 import org.openbravo.erpCommon.utility.SequenceIdData;
 import org.openbravo.model.ad.access.User;
@@ -1088,12 +1089,17 @@
         String qryStr = "select id from " + entityName + " where " + property + "=:value";
         qryStr += " and client.id " + OBDal.getInstance().getReadableClientsInClause();
         if (addOrgFilter) {
-          qryStr += " and organization.id "
-              + OBDal.getInstance().getReadableOrganizationsInClause();
+          qryStr += " and organization.id in :orgs";
         }
 
         final Query qry = OBDal.getInstance().getSession().createQuery(qryStr);
         qry.setString("value", value);
+        if (addOrgFilter) {
+          OrganizationStructureProvider osp = OBContext.getOBContext()
+              .getOrganizationStructureProvider();
+          qry.setParameterList("orgs",
+              osp.getNaturalTree(OBContext.getOBContext().getCurrentOrganization().getId()));
+        }
         final java.util.List<?> values = qry.list();
         if (values.isEmpty() || values.size() > 1) {
           return null;
