# HG changeset patch
# User Asier Lostalé <asier.lostale@openbravo.com>
# Date 1380534846 -7200
# Node ID 45c6af5724e326d20effd3bf4fbe974ddcdd073f
# Parent  9c7cda930438ab886a3cb54091ffaacf5e2eecd4
fixed bug 24388: 2 property columns referencing same entity do not work

diff -r 9c7cda930438 -r 45c6af5724e3 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	Fri Sep 27 15:49:39 2013 +0200
+++ b/modules/org.openbravo.client.application/src/org/openbravo/client/application/window/FormInitializationComponent.java	Mon Sep 30 11:54:06 2013 +0200
@@ -404,7 +404,7 @@
           }
 
           jsonColumnValues.put(
-              field.getColumn().getDBColumnName(),
+              OBViewFieldHandler.getFieldColumnName(field, null),
               columnValues.get("inp"
                   + Sqlc.TransformaNombreColumna(field.getColumn().getDBColumnName())));
         }
diff -r 9c7cda930438 -r 45c6af5724e3 modules/org.openbravo.client.application/src/org/openbravo/client/application/window/OBViewFieldHandler.java
--- a/modules/org.openbravo.client.application/src/org/openbravo/client/application/window/OBViewFieldHandler.java	Fri Sep 27 15:49:39 2013 +0200
+++ b/modules/org.openbravo.client.application/src/org/openbravo/client/application/window/OBViewFieldHandler.java	Mon Sep 30 11:54:06 2013 +0200
@@ -434,6 +434,33 @@
     }
   }
 
+  /**
+   * Returns column name for a field, in case of property fields, a virtual name is generated to
+   * prevent multiple fields with same column name
+   * 
+   * @param f
+   *          Field to get name for
+   * @param p
+   *          Property for the column of the field; if {@code null}, it is obtained from @{code
+   *          field.getColumn}
+   * @return Column name to be used for the field
+   */
+  static String getFieldColumnName(Field f, Property p) {
+    String columnName;
+    if (p == null) {
+      columnName = f.getColumn().getDBColumnName();
+    } else {
+      columnName = p.getColumnName();
+    }
+
+    if (f != null && f.getProperty() != null) {
+      columnName = "_propertyField_" + Sqlc.TransformaNombreColumna(f.getName()).replace(" ", "")
+          + "_" + columnName;
+    }
+
+    return columnName;
+  }
+
   interface OBViewFieldDefinition {
     public int getGridSort();
 
@@ -1191,7 +1218,7 @@
     }
 
     public String getColumnName() {
-      return property.getColumnName();
+      return OBViewFieldHandler.getFieldColumnName(field, property);
     }
 
     public String getInpColumnName() {
