details:   https://code.openbravo.com/erp/devel/pi/rev/668cc694e1b5
changeset: 32733:668cc694e1b5
user:      Carlos Aristu <carlos.aristu <at> openbravo.com>
date:      Wed Sep 20 18:29:04 2017 +0200
summary:   related to bug 36863: take the access level from the table of 
selector's tab

diffstat:

 
modules/org.openbravo.userinterface.selector/src/org/openbravo/userinterface/selector/CustomQuerySelectorDatasource.java
 |  20 +++++++++-
 1 files changed, 18 insertions(+), 2 deletions(-)

diffs (37 lines):

diff -r bf62b6f1ff39 -r 668cc694e1b5 
modules/org.openbravo.userinterface.selector/src/org/openbravo/userinterface/selector/CustomQuerySelectorDatasource.java
--- 
a/modules/org.openbravo.userinterface.selector/src/org/openbravo/userinterface/selector/CustomQuerySelectorDatasource.java
  Wed Sep 20 17:59:44 2017 +0200
+++ 
b/modules/org.openbravo.userinterface.selector/src/org/openbravo/userinterface/selector/CustomQuerySelectorDatasource.java
  Wed Sep 20 18:29:04 2017 +0200
@@ -208,8 +208,7 @@
       if (isOrgSelector) {
         // Just retrieve the list of direct accessible organizations in the 
current context
         orgs = 
RequestContext.get().getVariablesSecureApp().getSessionValue("#User_Org");
-        int accessLevel = 
Integer.parseInt(sel.getTable().getDataAccessLevel());
-        if (AccessLevel.ORGANIZATION.getDbValue() != accessLevel && 
!orgs.contains("'0'")) {
+        if (includeOrgZero(parameters, orgs)) {
           orgs += "".equals(orgs) ? "'0'" : ",'0'";
         }
       } else {
@@ -292,6 +291,23 @@
     return HQL;
   }
 
+  private boolean includeOrgZero(Map<String, String> parameters, String 
userOrgs) {
+    if (userOrgs.contains("'0'")) {
+      return false;
+    }
+    String tabId = parameters.get("tabId");
+    if (StringUtils.isEmpty(tabId)) {
+      return false;
+    }
+    Tab tab = OBDal.getInstance().get(Tab.class, tabId);
+    Table table = tab.getTable();
+    if (table == null) {
+      return false;
+    }
+    int accessLevel = Integer.parseInt(table.getDataAccessLevel());
+    return AccessLevel.ORGANIZATION.getDbValue() != accessLevel;
+  }
+
   /**
    * Returns the where clause of a selector's field based on the given value.
    * 

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to