Attached Files | diffIssue36720_pt.diff [^] (15,575 bytes) 2017-09-27 13:43 [Show Content] [Hide Content]diff -r 858de10f8db2 src-db/database/sourcedata/AD_MODEL_OBJECT.xml
--- a/src-db/database/sourcedata/AD_MODEL_OBJECT.xml Wed Sep 27 11:42:43 2017 +0530
+++ b/src-db/database/sourcedata/AD_MODEL_OBJECT.xml Wed Sep 27 13:19:41 2017 +0200
@@ -1,18 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<data>
-<!--0DC59E85D355418DB58BD39947E9C5E3--><AD_MODEL_OBJECT>
-<!--0DC59E85D355418DB58BD39947E9C5E3--> <AD_MODEL_OBJECT_ID><![CDATA[0DC59E85D355418DB58BD39947E9C5E3]]></AD_MODEL_OBJECT_ID>
-<!--0DC59E85D355418DB58BD39947E9C5E3--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
-<!--0DC59E85D355418DB58BD39947E9C5E3--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
-<!--0DC59E85D355418DB58BD39947E9C5E3--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
-<!--0DC59E85D355418DB58BD39947E9C5E3--> <ACTION><![CDATA[P]]></ACTION>
-<!--0DC59E85D355418DB58BD39947E9C5E3--> <CLASSNAME><![CDATA[org.openbravo.retail.posterminal.ProfileUtilsServlet]]></CLASSNAME>
-<!--0DC59E85D355418DB58BD39947E9C5E3--> <ISDEFAULT><![CDATA[N]]></ISDEFAULT>
-<!--0DC59E85D355418DB58BD39947E9C5E3--> <AD_MODULE_ID><![CDATA[FF808181326CC34901326D53DBCF0018]]></AD_MODULE_ID>
-<!--0DC59E85D355418DB58BD39947E9C5E3--> <OBJECT_TYPE><![CDATA[S]]></OBJECT_TYPE>
-<!--0DC59E85D355418DB58BD39947E9C5E3--> <NAME><![CDATA[POS Terminal Profile Utilities]]></NAME>
-<!--0DC59E85D355418DB58BD39947E9C5E3--></AD_MODEL_OBJECT>
-
<!--282A86ADC9ED45EC9DCE7CD0E76AA5D5--><AD_MODEL_OBJECT>
<!--282A86ADC9ED45EC9DCE7CD0E76AA5D5--> <AD_MODEL_OBJECT_ID><![CDATA[282A86ADC9ED45EC9DCE7CD0E76AA5D5]]></AD_MODEL_OBJECT_ID>
<!--282A86ADC9ED45EC9DCE7CD0E76AA5D5--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
diff -r 858de10f8db2 src-db/database/sourcedata/AD_MODEL_OBJECT_MAPPING.xml
--- a/src-db/database/sourcedata/AD_MODEL_OBJECT_MAPPING.xml Wed Sep 27 11:42:43 2017 +0530
+++ b/src-db/database/sourcedata/AD_MODEL_OBJECT_MAPPING.xml Wed Sep 27 13:19:41 2017 +0200
@@ -30,16 +30,6 @@
<!--31667A8838174DE0BC86A2755A1D96FB--> <ISDEFAULT><![CDATA[Y]]></ISDEFAULT>
<!--31667A8838174DE0BC86A2755A1D96FB--></AD_MODEL_OBJECT_MAPPING>
-<!--359645C5C84B42EBADCBFF258E23DF27--><AD_MODEL_OBJECT_MAPPING>
-<!--359645C5C84B42EBADCBFF258E23DF27--> <AD_MODEL_OBJECT_MAPPING_ID><![CDATA[359645C5C84B42EBADCBFF258E23DF27]]></AD_MODEL_OBJECT_MAPPING_ID>
-<!--359645C5C84B42EBADCBFF258E23DF27--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
-<!--359645C5C84B42EBADCBFF258E23DF27--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
-<!--359645C5C84B42EBADCBFF258E23DF27--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
-<!--359645C5C84B42EBADCBFF258E23DF27--> <AD_MODEL_OBJECT_ID><![CDATA[0DC59E85D355418DB58BD39947E9C5E3]]></AD_MODEL_OBJECT_ID>
-<!--359645C5C84B42EBADCBFF258E23DF27--> <MAPPINGNAME><![CDATA[/org.openbravo.retail.posterminal.service.profileutils]]></MAPPINGNAME>
-<!--359645C5C84B42EBADCBFF258E23DF27--> <ISDEFAULT><![CDATA[N]]></ISDEFAULT>
-<!--359645C5C84B42EBADCBFF258E23DF27--></AD_MODEL_OBJECT_MAPPING>
-
<!--3D7A5BFC0101463B875B1F486FD2D657--><AD_MODEL_OBJECT_MAPPING>
<!--3D7A5BFC0101463B875B1F486FD2D657--> <AD_MODEL_OBJECT_MAPPING_ID><![CDATA[3D7A5BFC0101463B875B1F486FD2D657]]></AD_MODEL_OBJECT_MAPPING_ID>
<!--3D7A5BFC0101463B875B1F486FD2D657--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
diff -r 858de10f8db2 src-db/database/sourcedata/OBMOBC_SERVICES.xml
--- a/src-db/database/sourcedata/OBMOBC_SERVICES.xml Wed Sep 27 11:42:43 2017 +0530
+++ b/src-db/database/sourcedata/OBMOBC_SERVICES.xml Wed Sep 27 13:19:41 2017 +0200
@@ -715,6 +715,17 @@
<!--ED7F98F22E3442258B5BA316D0439CAB--> <ROUTINGTYPE><![CDATA[Failover]]></ROUTINGTYPE>
<!--ED7F98F22E3442258B5BA316D0439CAB--></OBMOBC_SERVICES>
+<!--F7D5D986A416431EB4E3F481A20D02B4--><OBMOBC_SERVICES>
+<!--F7D5D986A416431EB4E3F481A20D02B4--> <OBMOBC_SERVICES_ID><![CDATA[F7D5D986A416431EB4E3F481A20D02B4]]></OBMOBC_SERVICES_ID>
+<!--F7D5D986A416431EB4E3F481A20D02B4--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--F7D5D986A416431EB4E3F481A20D02B4--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--F7D5D986A416431EB4E3F481A20D02B4--> <AD_MODULE_ID><![CDATA[FF808181326CC34901326D53DBCF0018]]></AD_MODULE_ID>
+<!--F7D5D986A416431EB4E3F481A20D02B4--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--F7D5D986A416431EB4E3F481A20D02B4--> <SERVICE><![CDATA[org.openbravo.retail.posterminal.ProfileUtilsServlet]]></SERVICE>
+<!--F7D5D986A416431EB4E3F481A20D02B4--> <DESCRIPTION><![CDATA[WEB POS Profile utils service]]></DESCRIPTION>
+<!--F7D5D986A416431EB4E3F481A20D02B4--> <ROUTINGTYPE><![CDATA[Failover]]></ROUTINGTYPE>
+<!--F7D5D986A416431EB4E3F481A20D02B4--></OBMOBC_SERVICES>
+
<!--FDC8ADF6102047B9ADE87ED76BE6C631--><OBMOBC_SERVICES>
<!--FDC8ADF6102047B9ADE87ED76BE6C631--> <OBMOBC_SERVICES_ID><![CDATA[FDC8ADF6102047B9ADE87ED76BE6C631]]></OBMOBC_SERVICES_ID>
<!--FDC8ADF6102047B9ADE87ED76BE6C631--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
diff -r 858de10f8db2 src/org/openbravo/retail/posterminal/ProfileUtilsServlet.java
--- a/src/org/openbravo/retail/posterminal/ProfileUtilsServlet.java Wed Sep 27 11:42:43 2017 +0530
+++ b/src/org/openbravo/retail/posterminal/ProfileUtilsServlet.java Wed Sep 27 13:19:41 2017 +0200
@@ -8,149 +8,90 @@
*/
package org.openbravo.retail.posterminal;
-import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.log4j.Logger;
import org.codehaus.jettison.json.JSONArray;
import org.codehaus.jettison.json.JSONException;
import org.codehaus.jettison.json.JSONObject;
-import org.hibernate.Query;
-import org.openbravo.base.structure.BaseOBObject;
-import org.openbravo.dal.core.DalUtil;
import org.openbravo.dal.core.OBContext;
+import org.openbravo.dal.security.OrganizationStructureProvider;
import org.openbravo.dal.service.OBDal;
import org.openbravo.dal.service.OBQuery;
-import org.openbravo.mobile.core.process.WebServiceAbstractServlet;
-import org.openbravo.model.ad.system.Language;
-import org.openbravo.service.json.JsonConstants;
-import org.openbravo.service.json.JsonUtils;
+import org.openbravo.mobile.core.MobileDefaults;
+import org.openbravo.mobile.core.login.ProfileUtils;
+import org.openbravo.model.ad.access.Role;
+import org.openbravo.model.ad.access.UserRoles;
+import org.openbravo.model.common.enterprise.Organization;
+import org.openbravo.model.common.enterprise.Warehouse;
-public class ProfileUtilsServlet extends WebServiceAbstractServlet {
+public class ProfileUtilsServlet extends ProfileUtils {
- private static final Logger log = Logger.getLogger(ProfileUtilsServlet.class);
+ @Override
+ protected JSONArray getWarehouses(String clientId, List<Organization> orgs) throws JSONException {
+ // Web POS filters those warehouses which are defined in the organization window as store
+ // warehouses
+ List<JSONObject> orgWarehouseArray = new ArrayList<JSONObject>();
+ final OrganizationStructureProvider osp = OBContext.getOBContext()
+ .getOrganizationStructureProvider(clientId);
+ for (Organization org : orgs) {
+ JSONObject orgWarehouse = new JSONObject();
+ orgWarehouse.put("orgId", org.getId());
+ StringBuffer hqlQuery = new StringBuffer();
+ hqlQuery.append("organization.id in (:orgList) AND ");
+ hqlQuery.append("client.id=:clientId AND ");
+ hqlQuery.append("id in (");
+ hqlQuery.append(" select owar.warehouse.id from OrganizationWarehouse owar ");
+ hqlQuery.append(" where owar.organization.id = :orgId");
+ hqlQuery.append(") AND ");
+ hqlQuery.append("organization.active=true ");
+ hqlQuery.append("order by name");
+ final OBQuery<Warehouse> warehouses = OBDal.getInstance().createQuery(Warehouse.class,
+ hqlQuery.toString());
+ warehouses.setNamedParameter("orgList", osp.getNaturalTree(org.getId()));
+ warehouses.setNamedParameter("orgId", org.getId());
+ warehouses.setNamedParameter("clientId", clientId);
+ warehouses.setFilterOnReadableClients(false);
+ warehouses.setFilterOnReadableOrganization(false);
+ orgWarehouse.put("warehouseMap", createValueMapObject(warehouses.list(), null, null));
+ orgWarehouseArray.add(orgWarehouse);
+ }
+ return new JSONArray(orgWarehouseArray);
+ }
- private static final long serialVersionUID = 1L;
+ @Override
+ protected List<Role> getRoles(MobileDefaults defaults) {
+ // Web pos filters by roles of the current organization
+ String formId = defaults.getFormId();
+ String clientId = OBContext.getOBContext().getCurrentClient().getId();
+ String orgId = OBContext.getOBContext().getCurrentOrganization().getId();
+ String whereClause = "as r where userContact.id=:user and role.active=true ";
+ whereClause += "and exists (select 1 from ADFormAccess a "//
+ + " where a.active = true" //
+ + " and a.role.id = r.role.id "//
+ + " and a.role.client.id = :clientId "//
+ + " and a.specialForm.id = :formId) "//
+ + " and exists (select 1 from ADRoleOrganization o "//
+ + " where o.active = true and o.role.id = r.role.id "//
+ + " and o.organization.id = :orgId)"//
+ + " order by role.name ASC";
- private String[] getClientOrgIds(String terminalName) {
- final String hqlOrg = "select terminal.organization.client.id, terminal.organization.id "
- + "from OBPOS_Applications terminal " + "where terminal.searchKey = :theTerminalSearchKey";
- Query qryOrg = OBDal.getInstance().getSession().createQuery(hqlOrg);
- qryOrg.setParameter("theTerminalSearchKey", terminalName);
- qryOrg.setMaxResults(1);
+ final OBQuery<UserRoles> rolesQuery = OBDal.getInstance().createQuery(UserRoles.class,
+ whereClause);
+ rolesQuery.setFilterOnReadableClients(false);
+ rolesQuery.setFilterOnReadableOrganization(false);
+ rolesQuery.setNamedParameter("user", OBContext.getOBContext().getUser().getId());
+ rolesQuery.setNamedParameter("formId", formId);
+ rolesQuery.setNamedParameter("clientId", clientId);
+ rolesQuery.setNamedParameter("orgId", orgId);
- String strClient = "none";
- String strOrg = "none";
-
- if (qryOrg.uniqueResult() != null) {
- final Object[] orgResult = (Object[]) qryOrg.uniqueResult();
- strClient = orgResult[0].toString();
- strOrg = orgResult[1].toString();
+ final List<Role> result = new ArrayList<Role>();
+ for (UserRoles userRole : rolesQuery.list()) {
+ if (!result.contains(userRole.getRole())) {
+ result.add(userRole.getRole());
+ }
}
-
- final String result[] = { strClient, strOrg };
return result;
}
- @Override
- public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException,
- ServletException {
-
- OBContext.setAdminMode(false);
-
- final String terminalName = request.getParameter("terminalName");
- final String userId = request.getParameter("userId");
- final String command = request.getParameter("command");
-
- JSONObject result = new JSONObject();
- JSONObject resp = new JSONObject();
- JSONArray data = new JSONArray();
- JSONObject item = null;
- try {
- if (command.equals("availableRoles")) {
-
- String strClient = getClientOrgIds(terminalName)[0];
- String strOrg = getClientOrgIds(terminalName)[1];
- if ("none".equals(strClient)) {
- strClient = "0";
- }
- if ("none".equals(strOrg)) {
- strOrg = "0";
- }
-
- // Get the role and role name list with the following criteria
- // * The "Role" is available for the current organization
- // * The "Role" is available for the current user
- // * The "Role" has the "Web POS" form as an allowed one
-
- final String hqlRole = "select distinct role.id, role.name "
- + "from ADRole role, ADRoleOrganization roleOrg, ADUserRoles userRoles, ADFormAccess formAccess "
- + "where role.active = true and " + "roleOrg.active = true and "
- + "userRoles.active = true and " + "formAccess.active = true and "
- + "roleOrg.organization.id = :strOrg and " + "role.id = roleOrg.role.id and "
- + "role.id = userRoles.role.id and " + "role.id = formAccess.role.id and "
- + "userRoles.userContact.id = :userId and "
- + "formAccess.specialForm.id = :webPOSFormId " + "order by role.name";
- Query qryRole = OBDal.getInstance().getSession().createQuery(hqlRole);
- qryRole.setParameter("strOrg", strOrg);
- qryRole.setParameter("userId", userId);
- qryRole.setParameter("webPOSFormId", "B7B7675269CD4D44B628A2C6CF01244F");
- int queryCount = 0;
-
- for (Object qryRoleObject : qryRole.list()) {
- queryCount++;
- final Object[] qryRoleObjectItem = (Object[]) qryRoleObject;
-
- item = new JSONObject();
- item.put("id", qryRoleObjectItem[0]);
- item.put("_identifier", qryRoleObjectItem[1]);
-
- data.put(item);
- }
-
- resp.put("startRow", 0);
- resp.put("endRow", (queryCount == 0 ? 0 : queryCount - 1));
- resp.put("totalRows", queryCount);
- resp.put("data", data);
- result.append("response", resp);
- writeResult(response, result.toString());
-
- } else if (command.equals("availableLanguages")) {
- int queryCount = 0;
-
- final OBQuery<Language> languages = OBDal.getInstance().createQuery(
- Language.class,
- "(" + Language.PROPERTY_SYSTEMLANGUAGE + "=true or " + Language.PROPERTY_BASELANGUAGE
- + "=true)");
- languages.setFilterOnReadableClients(false);
- languages.setFilterOnReadableOrganization(false);
-
- DalUtil.sortByIdentifier(languages.list());
-
- for (BaseOBObject bob : languages.list()) {
- queryCount++;
- final JSONObject jsonArrayItem = new JSONObject();
- jsonArrayItem.put(JsonConstants.ID, (String) bob.getId());
- jsonArrayItem.put(JsonConstants.IDENTIFIER, (String) bob.getIdentifier());
- data.put(jsonArrayItem);
- }
-
- resp.put("startRow", 0);
- resp.put("endRow", (queryCount == 0 ? 0 : queryCount - 1));
- resp.put("totalRows", queryCount);
- resp.put("data", data);
- result.append("response", resp);
- writeResult(response, result.toString());
- }
- } catch (JSONException e) {
- log.error(e.getMessage(), e);
- writeResult(response, JsonUtils.convertExceptionToJson(e));
- } finally {
- OBContext.restorePreviousMode();
- OBContext.setOBContext((OBContext) null);
- }
- }
}
\ No newline at end of file
diff -r 858de10f8db2 web/org.openbravo.retail.posterminal/js/login/model/login-model.js
--- a/web/org.openbravo.retail.posterminal/js/login/model/login-model.js Wed Sep 27 11:42:43 2017 +0530
+++ b/web/org.openbravo.retail.posterminal/js/login/model/login-model.js Wed Sep 27 13:19:41 2017 +0200
@@ -32,6 +32,7 @@
appModuleId: 'FF808181326CC34901326D53DBCF0018',
appModulePrefix: 'OBPOS',
supportsOffline: true,
+ profileHandlerUrl: 'org.openbravo.retail.posterminal.ProfileUtilsServlet',
loginUtilsUrl: '../../org.openbravo.retail.posterminal.service.loginutils',
loginHandlerUrl: '../../org.openbravo.retail.posterminal/POSLoginHandler',
applicationFormatUrl: '../../org.openbravo.mobile.core/OBPOS_Main/ApplicationFormats',
diffIssue36720_mc.diff [^] (4,295 bytes) 2017-09-27 13:43 [Show Content] [Hide Content]diff -r 18ec430a469b src/org/openbravo/mobile/core/login/ProfileUtils.java
--- a/src/org/openbravo/mobile/core/login/ProfileUtils.java Mon Sep 25 16:53:18 2017 +0200
+++ b/src/org/openbravo/mobile/core/login/ProfileUtils.java Wed Sep 27 13:24:48 2017 +0200
@@ -114,19 +114,20 @@
return formItemInfo;
}
- private JSONArray getWarehouses(String clientId, List<Organization> orgs) throws JSONException {
+ protected JSONArray getWarehouses(String clientId, List<Organization> orgs) throws JSONException {
List<JSONObject> orgWarehouseArray = new ArrayList<JSONObject>();
final OrganizationStructureProvider osp = OBContext.getOBContext()
.getOrganizationStructureProvider(clientId);
for (Organization org : orgs) {
JSONObject orgWarehouse = new JSONObject();
orgWarehouse.put("orgId", org.getId());
- final OBQuery<Warehouse> warehouses = OBDal
- .getInstance()
- .createQuery(
- Warehouse.class,
- "organization.id in (:orgList) and client.id=:clientId and id in (select owar.warehouse.id from OrganizationWarehouse owar where owar.organization.id = '"
- + org.getId() + "' ) and organization.active=true order by name");
+ StringBuffer hqlQuery = new StringBuffer();
+ hqlQuery.append("organization.id in (:orgList) AND ");
+ hqlQuery.append("client.id=:clientId AND ");
+ hqlQuery.append("organization.active=true ");
+ hqlQuery.append("order by name");
+ final OBQuery<Warehouse> warehouses = OBDal.getInstance().createQuery(Warehouse.class,
+ hqlQuery.toString());
warehouses.setNamedParameter("orgList", osp.getNaturalTree(org.getId()));
warehouses.setNamedParameter("clientId", clientId);
warehouses.setFilterOnReadableClients(false);
@@ -167,7 +168,7 @@
return formItemInfo;
}
- private JSONArray createValueMapObject(List<? extends BaseOBObject> objects, String extraField,
+ protected JSONArray createValueMapObject(List<? extends BaseOBObject> objects, String extraField,
String extraFieldProperty) throws JSONException {
// sort the list by their identifier
DalUtil.sortByIdentifier(objects);
@@ -184,34 +185,22 @@
return jsonArray;
}
- private List<Role> getRoles(MobileDefaults defaults) {
- // return the complete role list
-
- // " SELECT A_R.AD_ROLE_ID, A_R.NAME, A_R.AD_CLIENT_ID, A_R.CLIENTLIST " +
- // " FROM AD_ROLE A_R, AD_USER_ROLES A_U_R " +
- // " WHERE A_R.AD_ROLE_ID = A_U_R.AD_ROLE_ID " +
- // " AND A_U_R.ISACTIVE = 'Y' " +
- // " AND A_R.ISACTIVE = 'Y' " +
- // " AND A_U_R.AD_USER_ID = ?" +
- // " ORDER BY A_R.NAME";
-
+ protected List<Role> getRoles(MobileDefaults defaults) {
String formId = defaults.getFormId();
String clientId = OBContext.getOBContext().getCurrentClient().getId();
- String orgId = OBContext.getOBContext().getCurrentOrganization().getId();
String whereClause = "as r where userContact.id=:user and role.active=true ";
if (formId != null) {
whereClause += "and exists (select 1 from ADFormAccess a "//
+ " where a.active = true" //
+ " and a.role.id = r.role.id "//
+ " and a.role.client.id = :clientId "//
- + " and a.specialForm.id = :formId) "//
- + " and exists (select 1 from ADRoleOrganization o "//
- + " where o.active = true and o.role.id = r.role.id "//
- + " and o.organization.id = :orgId)";
+ + " and a.specialForm.id = :formId) ";
}
+ whereClause += "order by role.name asc";
final OBQuery<UserRoles> rolesQuery = OBDal.getInstance().createQuery(UserRoles.class,
whereClause);
+
rolesQuery.setFilterOnReadableClients(false);
rolesQuery.setFilterOnReadableOrganization(false);
rolesQuery.setNamedParameter("user", OBContext.getOBContext().getUser().getId());
@@ -219,7 +208,6 @@
if (formId != null) {
rolesQuery.setNamedParameter("formId", formId);
rolesQuery.setNamedParameter("clientId", clientId);
- rolesQuery.setNamedParameter("orgId", orgId);
}
final List<Role> result = new ArrayList<Role>();
@@ -230,5 +218,4 @@
}
return result;
}
-
}
|