details:   https://code.openbravo.com/erp/devel/pi/rev/222a1f0084c5
changeset: 14948:222a1f0084c5
user:      Antonio Moreno <antonio.moreno <at> openbravo.com>
date:      Wed Dec 21 12:10:00 2011 +0100
summary:   Fixed issue 19338. When computing session attributes, readonly logic 
will be considered in addition to display logic

diffstat:

 
modules/org.openbravo.client.application/src/org/openbravo/client/application/window/FormInitializationComponent.java
 |  33 ++++++---
 1 files changed, 23 insertions(+), 10 deletions(-)

diffs (50 lines):

diff -r 9cd579c40b28 -r 222a1f0084c5 
modules/org.openbravo.client.application/src/org/openbravo/client/application/window/FormInitializationComponent.java
--- 
a/modules/org.openbravo.client.application/src/org/openbravo/client/application/window/FormInitializationComponent.java
     Wed Dec 21 09:52:54 2011 +0100
+++ 
b/modules/org.openbravo.client.application/src/org/openbravo/client/application/window/FormInitializationComponent.java
     Wed Dec 21 12:10:00 2011 +0100
@@ -382,16 +382,16 @@
           if (field.getDisplayLogic() != null && field.isDisplayed() && 
field.isActive()) {
             final DynamicExpressionParser parser = new DynamicExpressionParser(
                 field.getDisplayLogic(), tab);
-
-            for (String attrName : parser.getSessionAttributes()) {
-              if (!sessionAttributesMap.containsKey(attrName)) {
-                final String attrValue = Utility
-                    .getContext(new DalConnectionProvider(false), 
RequestContext.get()
-                        .getVariablesSecureApp(), attrName, 
tab.getWindow().getId());
-                sessionAttributesMap.put(attrName.startsWith("#") ? 
attrName.replace("#", "_")
-                    : attrName, attrValue);
-              }
-            }
+            setSessionAttributesFromParserResult(parser, sessionAttributesMap, 
tab.getWindow()
+                .getId());
+          }
+          // We also add session attributes from readonly logic fields
+          if (field.getColumn().getReadOnlyLogic() != null && 
field.isDisplayed()
+              && field.isActive()) {
+            final DynamicExpressionParser parser = new 
DynamicExpressionParser(field.getColumn()
+                .getReadOnlyLogic(), tab);
+            setSessionAttributesFromParserResult(parser, sessionAttributesMap, 
tab.getWindow()
+                .getId());
           }
 
         }
@@ -443,6 +443,19 @@
     }
   }
 
+  private void setSessionAttributesFromParserResult(DynamicExpressionParser 
parser,
+      Map<String, String> sessionAttributesMap, String windowId) {
+    for (String attrName : parser.getSessionAttributes()) {
+      if (!sessionAttributesMap.containsKey(attrName)) {
+        final String attrValue = Utility.getContext(new 
DalConnectionProvider(false),
+            RequestContext.get().getVariablesSecureApp(), attrName, windowId);
+        sessionAttributesMap.put(attrName.startsWith("#") ? 
attrName.replace("#", "_") : attrName,
+            attrValue);
+      }
+    }
+
+  }
+
   private void computeColumnValues(String mode, Tab tab, List<String> 
allColumns,
       Map<String, JSONObject> columnValues, BaseOBObject parentRecord, String 
parentId,
       String changedColumn, JSONObject jsContent, List<String> changeEventCols,

------------------------------------------------------------------------------
Write once. Port to many.
Get the SDK and tools to simplify cross-platform app development. Create 
new or port existing apps to sell to consumers worldwide. Explore the 
Intel AppUpSM program developer opportunity. appdeveloper.intel.com/join
http://p.sf.net/sfu/intel-appdev
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to