From a1f39f95063097956c8740a38d529ec28fb7c97f Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Tue, 12 Jan 2021 14:33:48 +0100 Subject: [PATCH] IDEMPIERE-4641 AD_ProcessPara.DisplayLogic is not accepting @Value_ID.ForeignColumn@ notation (#520) --- .../src/org/compiere/model/GridField.java | 31 +++++++++++++------ 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/org.adempiere.base/src/org/compiere/model/GridField.java b/org.adempiere.base/src/org/compiere/model/GridField.java index 0746b94a10..ddd9a38e42 100644 --- a/org.adempiere.base/src/org/compiere/model/GridField.java +++ b/org.adempiere.base/src/org/compiere/model/GridField.java @@ -1243,23 +1243,34 @@ public class GridField } value = Env.getContext (ctx, m_vo.WindowNo, m_vo.TabNo, variableName, tabOnly, true); } - if (!Util.isEmpty(value) && !Util.isEmpty(foreignColumn) && variableName.endsWith("_ID") - && getGridTab() != null) { - String refValue = ""; + if (!Util.isEmpty(value) && !Util.isEmpty(foreignColumn) && variableName.endsWith("_ID")) { int id = 0; try { id = Integer.parseInt(value); } catch (Exception e){} if (id > 0) { - MColumn column = MColumn.get(ctx, getGridTab().getTableName(), variableName); - if (column != null) { - String foreignTable = column.getReferenceTableName(); - refValue = DB.getSQLValueString(null, - "SELECT " + foreignColumn + " FROM " + foreignTable + " WHERE " - + foreignTable + "_ID = ?", id); + String refValue = ""; + if (getGridTab() != null) { + MColumn column = MColumn.get(ctx, getGridTab().getTableName(), variableName); + if (column != null) { + String foreignTable = column.getReferenceTableName(); + refValue = DB.getSQLValueString(null, + "SELECT " + foreignColumn + " FROM " + foreignTable + " WHERE " + + foreignTable + "_ID = ?", id); + } + return refValue; + } else { + // no GridTab - maybe coming from process parameter, try tableName from columnName + String foreignTable = variableName.substring(0, variableName.length()-3); + MTable table = MTable.get(ctx, foreignTable); + if (table != null) { + refValue = DB.getSQLValueString(null, + "SELECT " + foreignColumn + " FROM " + foreignTable + " WHERE " + + foreignTable + "_ID = ?", id); + return refValue; + } } } - return refValue; } return value; } // get_ValueAsString