diff --git a/fitnesse/FitNesseRoot/IdempiereSuite/TestCashPosOrder/content.txt b/fitnesse/FitNesseRoot/IdempiereSuite/TestCashPosOrder/content.txt
index a46f1c1336..9402f28b2a 100644
--- a/fitnesse/FitNesseRoot/IdempiereSuite/TestCashPosOrder/content.txt
+++ b/fitnesse/FitNesseRoot/IdempiereSuite/TestCashPosOrder/content.txt
@@ -131,6 +131,5 @@ Check existance of cash payment (now on payment table)
|*Read* | |
|documentno | |
|description | |
-|amount | |
|processed | |
diff --git a/fitnesse/FitNesseRoot/RecentChanges/content.txt b/fitnesse/FitNesseRoot/RecentChanges/content.txt
index 60b5d36182..6a71f1d334 100644
--- a/fitnesse/FitNesseRoot/RecentChanges/content.txt
+++ b/fitnesse/FitNesseRoot/RecentChanges/content.txt
@@ -1,7 +1,7 @@
+|IdempiereSuite.TestCashPosOrder||22:32:07 miƩ, jul 10, 2013|
|IdempiereSuite.TestInitialClientSetup||17:03:35 vie, jun 28, 2013|
|IdempiereSuite.TestPostInternalInventory||15:31:05 vie, jun 28, 2013|
|IdempiereSuite.TestCreateReference||14:44:52 vie, jun 28, 2013|
-|IdempiereSuite.TestCashPosOrder||14:42:20 vie, jun 28, 2013|
|ZkSuite.ZkGardenAdminLogin||13:02:13 vie, jun 28, 2013|
|ZkSuite.ZkSystemAdminLogin||13:00:38 vie, jun 28, 2013|
|||12:04:00 jue, dic 20, 2012|
diff --git a/org.adempiere.base/src/org/compiere/model/MColumn.java b/org.adempiere.base/src/org/compiere/model/MColumn.java
index 7fe700c099..8e41f62b01 100644
--- a/org.adempiere.base/src/org/compiere/model/MColumn.java
+++ b/org.adempiere.base/src/org/compiere/model/MColumn.java
@@ -681,18 +681,32 @@ public class MColumn extends X_AD_Column
public String getReferenceTableName() {
String foreignTable = null;
- if (DisplayType.TableDir == getAD_Reference_ID()
- || (DisplayType.Search == getAD_Reference_ID() && getAD_Reference_Value_ID() == 0)) {
+ int refid = getAD_Reference_ID();
+ if (DisplayType.TableDir == refid || (DisplayType.Search == refid && getAD_Reference_Value_ID() == 0)) {
foreignTable = getColumnName().substring(0, getColumnName().length()-3);
- } else if (DisplayType.Table == getAD_Reference_ID() || DisplayType.Search == getAD_Reference_ID()) {
+ } else if (DisplayType.Table == refid || DisplayType.Search == refid) {
X_AD_Reference ref = new X_AD_Reference(getCtx(), getAD_Reference_Value_ID(), get_TrxName());
if (X_AD_Reference.VALIDATIONTYPE_TableValidation.equals(ref.getValidationType())) {
MRefTable rt = new MRefTable(getCtx(), getAD_Reference_Value_ID(), get_TrxName());
if (rt != null)
foreignTable = rt.getAD_Table().getTableName();
}
- } else if (DisplayType.List == getAD_Reference_ID()) {
+ } else if (DisplayType.List == refid) {
foreignTable = "AD_Ref_List";
+ } else if (DisplayType.Location == refid) {
+ foreignTable = "C_Location";
+ } else if (DisplayType.Account == refid) {
+ foreignTable = "C_ValidCombination";
+ } else if (DisplayType.Locator == refid) {
+ foreignTable = "M_Locator";
+ } else if (DisplayType.PAttribute == refid) {
+ foreignTable = "M_AttributeSetInstance";
+ } else if (DisplayType.Assignment == refid) {
+ foreignTable = "S_ResourceAssignment";
+ } else if (DisplayType.Image == refid) {
+ foreignTable = "AD_Image";
+ } else if (DisplayType.Color == refid) {
+ foreignTable = "AD_Color";
}
return foreignTable;
diff --git a/org.idempiere.fitnesse.fixture/src/org/idempiere/fitnesse/fixture/AssertRecord.java b/org.idempiere.fitnesse.fixture/src/org/idempiere/fitnesse/fixture/AssertRecord.java
index 56c7ed33b2..99349e0c8f 100644
--- a/org.idempiere.fitnesse.fixture/src/org/idempiere/fitnesse/fixture/AssertRecord.java
+++ b/org.idempiere.fitnesse.fixture/src/org/idempiere/fitnesse/fixture/AssertRecord.java
@@ -66,7 +66,7 @@ public class AssertRecord extends TableFixture {
MTable table = null;
POInfo poinfo = null;
boolean alreadyread = false;
- StringBuilder whereclause = new StringBuilder("");
+ StringBuilder whereclause = new StringBuilder();
boolean isErrorExpected = false;
for (int i = 0; i < rows; i++) {
String cell_title = getText(i, 0);
@@ -104,6 +104,8 @@ public class AssertRecord extends TableFixture {
wrong(i, 1);
return;
}
+ whereclause.insert(0, "(");
+ whereclause.append(") AND AD_Client_ID IN (0,").append(Env.getAD_Client_ID(ctx)).append(")");
String sql = "SELECT * FROM " + tableName + " WHERE " + whereclause;
PreparedStatement pstmt = null;
ResultSet rs = null;
@@ -166,28 +168,34 @@ public class AssertRecord extends TableFixture {
if (! alreadyread) {
// not read yet - add value to where clause
String value_evaluated = Util.evaluate(ctx, windowNo, cell_value, getCell(i, 1));
- if (whereclause.length() > 0)
- whereclause.append(" AND ");
+ if (whereclause.length() > 0) {
+ whereclause.insert(0, "(");
+ whereclause.append(") AND ");
+ }
whereclause.append(cell_title).append("=").append(value_evaluated);
} else {
// already read, compare the value of db with the context variable or formula
String title_evaluated = "";
if (gpo != null) {
- Object result = gpo.get_Value(cell_title);
- if (result != null) {
- getCell(i, 0).addToBody("
" + result.toString());
- title_evaluated = result.toString();
- }
-
- String value_evaluated = cell_value;
- if (cell_value.startsWith("@")) {
- value_evaluated = Util.evaluate(ctx, windowNo,cell_value, getCell(i, 1));
- }
-
- if (title_evaluated.equals(value_evaluated)) {
- right(i, 1);
+ if (poinfo.getColumnIndex(cell_title) < 0) {
+ wrong(i, 0);
} else {
- wrong(i, 1);
+ Object result = gpo.get_Value(cell_title);
+ if (result != null) {
+ getCell(i, 0).addToBody("
" + result.toString());
+ title_evaluated = result.toString();
+ }
+
+ String value_evaluated = cell_value;
+ if (cell_value.startsWith("@")) {
+ value_evaluated = Util.evaluate(ctx, windowNo,cell_value, getCell(i, 1));
+ }
+
+ if (title_evaluated.equals(value_evaluated)) {
+ right(i, 1);
+ } else {
+ wrong(i, 1);
+ }
}
}
}
diff --git a/org.idempiere.fitnesse.fixture/src/org/idempiere/fitnesse/fixture/CreateRecord.java b/org.idempiere.fitnesse.fixture/src/org/idempiere/fitnesse/fixture/CreateRecord.java
index f1a34b5201..ebed4bd806 100644
--- a/org.idempiere.fitnesse.fixture/src/org/idempiere/fitnesse/fixture/CreateRecord.java
+++ b/org.idempiere.fitnesse.fixture/src/org/idempiere/fitnesse/fixture/CreateRecord.java
@@ -30,9 +30,12 @@ import java.math.BigDecimal;
import java.sql.Timestamp;
import java.util.Properties;
+import org.compiere.model.MColumn;
import org.compiere.model.MTable;
import org.compiere.model.PO;
import org.compiere.model.POInfo;
+import org.compiere.util.DB;
+import org.compiere.util.DisplayType;
import org.compiere.util.Env;
import org.compiere.util.ValueNamePair;
@@ -65,6 +68,7 @@ public class CreateRecord extends TableFixture {
boolean tableOK = false;
boolean columnsOK = true;
boolean isErrorExpected = "*Save*Error*".equalsIgnoreCase(getText(rows-1, 0));
+ String msgerror1 = getText(rows-1, 1);
MTable table = null;
POInfo poinfo = null;
@@ -145,7 +149,7 @@ public class CreateRecord extends TableFixture {
columnName = cell_title;
int idxcol = gpo.get_ColumnIndex(columnName);
if (idxcol < 0) {
- wrong(i,1);
+ wrong(i,0);
// column does not exist in dictionary - anyways try custom column in case it exists in table
gpo.set_CustomColumnReturningBoolean(columnName, cell_value);
} else {
@@ -153,8 +157,16 @@ public class CreateRecord extends TableFixture {
String value_evaluated = Util.evaluate(ctx, windowNo, cell_value, getCell(i, 1));
// set value according to class
Object value = null;
- if (value_evaluated == null || value_evaluated.length() == 0) {
+ if (org.compiere.util.Util.isEmpty(cell_value)) {
value = null;
+ } else if (org.compiere.util.Util.isEmpty(value_evaluated)) {
+ boolean ok = Util.evaluateError("Data not found",msgerror1,isErrorExpected);
+ if (ok)
+ right(i,1);
+ else
+ wrong(i,1);
+ columnsOK = false;
+ continue;
} else if (columnClass == Boolean.class) {
if ("Y".equalsIgnoreCase(value_evaluated) || "true".equalsIgnoreCase(value_evaluated))
value = new Boolean(true);
@@ -166,7 +178,27 @@ public class CreateRecord extends TableFixture {
}
} else if (columnClass == Integer.class) {
try {
- value = Integer.parseInt(value_evaluated);
+ Integer intid = Integer.parseInt(value_evaluated);
+ MColumn column = table.getColumn(cell_title);
+ if (intid > 0 && (DisplayType.isID(column.getAD_Reference_ID()) || column.getAD_Reference_ID() != DisplayType.ID)) {
+ // Evaluate the ID is from the actual client or system
+ String foreignTable = column.getReferenceTableName();
+ if (foreignTable != null) {
+ int foreignClient = DB.getSQLValueEx(null,
+ "SELECT AD_Client_ID FROM " + foreignTable + " WHERE " + foreignTable + "_ID=?",
+ intid);
+ if (foreignClient != 0 && foreignClient != Env.getAD_Client_ID(ctx)) {
+ boolean ok = Util.evaluateError("Data not found", msgerror1, isErrorExpected);
+ if (ok)
+ right(i, 1);
+ else
+ wrong(i, 1);
+ columnsOK = false;
+ continue;
+ }
+ }
+ }
+ value = intid;
} catch (NumberFormatException e) {
exception(getCell(i, 1), e);
continue;
diff --git a/org.idempiere.fitnesse.fixture/src/org/idempiere/fitnesse/fixture/DeleteRecord.java b/org.idempiere.fitnesse.fixture/src/org/idempiere/fitnesse/fixture/DeleteRecord.java
index 5b279938ce..ed0b4e7761 100644
--- a/org.idempiere.fitnesse.fixture/src/org/idempiere/fitnesse/fixture/DeleteRecord.java
+++ b/org.idempiere.fitnesse.fixture/src/org/idempiere/fitnesse/fixture/DeleteRecord.java
@@ -30,6 +30,7 @@ import java.util.Properties;
import org.compiere.model.MTable;
import org.compiere.model.PO;
import org.compiere.util.DB;
+import org.compiere.util.Env;
import fitnesse.fixtures.TableFixture;
@@ -65,7 +66,7 @@ public class DeleteRecord extends TableFixture {
MTable table = null;
boolean alreadyread = false;
- StringBuilder whereclause = new StringBuilder("");
+ StringBuilder whereclause = new StringBuilder();
boolean isErrorExpected = false;
String msgerror = null;
@@ -105,6 +106,8 @@ public class DeleteRecord extends TableFixture {
wrong(i, 1);
return;
}
+ whereclause.insert(0, "(");
+ whereclause = whereclause.append(") AND AD_Client_ID=").append(Env.getAD_Client_ID(ctx));
String sql = "SELECT * FROM " + tableName + " WHERE "+ whereclause;
PreparedStatement pstmt = null;
ResultSet rs = null;
@@ -159,8 +162,10 @@ public class DeleteRecord extends TableFixture {
String value_evaluated = Util.evaluate(ctx, windowNo,cell_value, getCell(i, 1));
if (!alreadyread) {
// not read yet - add value to where clause
- if (whereclause.length() > 0)
- whereclause.append(" AND ");
+ if (whereclause.length() > 0) {
+ whereclause.insert(0, "(");
+ whereclause.append(") AND ");
+ }
whereclause.append(cell_title).append("=").append(value_evaluated);
}
}
diff --git a/org.idempiere.fitnesse.fixture/src/org/idempiere/fitnesse/fixture/ReadRecord.java b/org.idempiere.fitnesse.fixture/src/org/idempiere/fitnesse/fixture/ReadRecord.java
index e6f281d0ed..4abe3e0719 100644
--- a/org.idempiere.fitnesse.fixture/src/org/idempiere/fitnesse/fixture/ReadRecord.java
+++ b/org.idempiere.fitnesse.fixture/src/org/idempiere/fitnesse/fixture/ReadRecord.java
@@ -66,7 +66,7 @@ public class ReadRecord extends TableFixture {
MTable table = null;
POInfo poinfo = null;
boolean alreadyread = false;
- String whereclause = new String("");
+ StringBuilder whereclause = new StringBuilder();
boolean isErrorExpected = false;
for (int i = 0; i < rows; i++) {
String cell_title = getText(i, 0);
@@ -90,7 +90,7 @@ public class ReadRecord extends TableFixture {
exception(getCell(i, 1), new Exception("*Where* must be defined in second row"));
return;
}
- whereclause = cell_value;
+ whereclause.append(cell_value);
} else if (cell_title.equalsIgnoreCase("*Read*") || cell_title.equalsIgnoreCase("*Read*Error*")) {
if (! tableOK) {
getCell(i, 1).addToBody("Table " + tableName + " does not exist");
@@ -103,6 +103,8 @@ public class ReadRecord extends TableFixture {
wrong(i, 1);
return;
}
+ whereclause.insert(0, "(");
+ whereclause.append(") AND AD_Client_ID IN (0,").append(Env.getAD_Client_ID(ctx)).append(")");
String sql = "SELECT * FROM " + tableName + " WHERE " + whereclause;
PreparedStatement pstmt = null;
ResultSet rs = null;
@@ -170,15 +172,21 @@ public class ReadRecord extends TableFixture {
if (! alreadyread) {
// not read yet - add value to where clause
String value_evaluated = Util.evaluate(ctx, windowNo, cell_value, getCell(i, 1));
- if (whereclause.length() > 0)
- whereclause = whereclause + " AND ";
- whereclause = whereclause + cell_title + "=" + value_evaluated;
+ if (whereclause.length() > 0) {
+ whereclause.insert(0, "(");
+ whereclause.append(") AND ");
+ }
+ whereclause.append(cell_title).append("=").append(value_evaluated);
} else {
// already read, show the value of context variable
if (gpo != null) {
- Object result = gpo.get_Value(cell_title);
- if (result != null)
- getCell(i, 1).addToBody(result.toString());
+ if (poinfo.getColumnIndex(cell_title) < 0) {
+ wrong(i, 0);
+ } else {
+ Object result = gpo.get_Value(cell_title);
+ if (result != null)
+ getCell(i, 1).addToBody(result.toString());
+ }
}
}
}
diff --git a/org.idempiere.fitnesse.fixture/src/org/idempiere/fitnesse/fixture/RunProcess.java b/org.idempiere.fitnesse.fixture/src/org/idempiere/fitnesse/fixture/RunProcess.java
index dc2f9b6e9f..4c1fa28c42 100644
--- a/org.idempiere.fitnesse.fixture/src/org/idempiere/fitnesse/fixture/RunProcess.java
+++ b/org.idempiere.fitnesse.fixture/src/org/idempiere/fitnesse/fixture/RunProcess.java
@@ -44,6 +44,7 @@ import org.compiere.model.MTable;
import org.compiere.model.PO;
import org.compiere.process.ProcessInfo;
import org.compiere.util.CLogger;
+import org.compiere.util.DB;
import org.compiere.util.DisplayType;
import org.compiere.util.Env;
import org.compiere.util.Msg;
@@ -293,11 +294,27 @@ public class RunProcess extends TableFixture {
exception(getCell(i, 1), e);
continue;
}
- }
- else if (parameterName.equalsIgnoreCase("*DocAction*"))
- docAction = value_evaluated;
- else
- fmap.put(parameterName, value_evaluated);
+ } else {
+ if (parameterName.equalsIgnoreCase("*DocAction*")) {
+ docAction = value_evaluated;
+ } else {
+ String param = DB.getSQLValueStringEx(null,
+ "SELECT ColumnName " +
+ "FROM AD_Process_Para " +
+ "WHERE IsActive='Y' AND AD_Process_ID=? AND LOWER(ColumnName)=?",
+ process.getAD_Process_ID(), parameterName.toLowerCase());
+ if (param == null) {
+ boolean ok = Util.evaluateError(msgerror1,"Parameter Not Found", isErrorExpected);
+ if (ok) {
+ right(getCell(i, 1));
+ } else {
+ exception(getCell(i, 1), new Exception("Parameter Not Found"));
+ }
+ } else {
+ fmap.put(param, value_evaluated);
+ }
+ }
+ }
}
}
diff --git a/org.idempiere.fitnesse.fixture/src/org/idempiere/fitnesse/fixture/UpdateRecord.java b/org.idempiere.fitnesse.fixture/src/org/idempiere/fitnesse/fixture/UpdateRecord.java
index 4a11961e6a..0f318fd28c 100644
--- a/org.idempiere.fitnesse.fixture/src/org/idempiere/fitnesse/fixture/UpdateRecord.java
+++ b/org.idempiere.fitnesse.fixture/src/org/idempiere/fitnesse/fixture/UpdateRecord.java
@@ -23,14 +23,21 @@
package org.idempiere.fitnesse.fixture;
+import java.math.BigDecimal;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
+import java.sql.Timestamp;
import java.util.Properties;
+import org.compiere.model.MColumn;
import org.compiere.model.MTable;
import org.compiere.model.PO;
+import org.compiere.model.POInfo;
import org.compiere.util.DB;
+import org.compiere.util.DisplayType;
+import org.compiere.util.Env;
+import org.compiere.util.ValueNamePair;
import fitnesse.fixtures.TableFixture;
@@ -66,10 +73,12 @@ public class UpdateRecord extends TableFixture {
PO gpo = null;
String tableName = new String("");
boolean tableOK = false;
+ boolean columnsOK = true;
MTable table = null;
+ POInfo poinfo = null;
boolean alreadyread = false;
- StringBuilder whereclause = new StringBuilder("");
+ StringBuilder whereclause = new StringBuilder();
boolean isErrorExpected = false;
String msgerror = null;
for (int i = 0; i < rows; i++) {
@@ -88,6 +97,7 @@ public class UpdateRecord extends TableFixture {
} else {
tableOK = true;
}
+ poinfo = POInfo.getPOInfo(ctx, table!=null ? table.getAD_Table_ID() : 0);
} else if (cell_title.equalsIgnoreCase("*Where*")) {
if (i != 1) {
@@ -108,6 +118,7 @@ public class UpdateRecord extends TableFixture {
wrong(i, 1);
return;
}
+ whereclause = whereclause.append(" AND AD_Client_ID=").append(Env.getAD_Client_ID(ctx));
String sql = "SELECT * FROM " + tableName + " WHERE "+ whereclause;
PreparedStatement pstmt = null;
ResultSet rs = null;
@@ -160,34 +171,145 @@ public class UpdateRecord extends TableFixture {
String value_evaluated = Util.evaluate(ctx, windowNo,cell_value, getCell(i, 1));
if (!alreadyread) {
// not read yet - add value to where clause
- if (whereclause.length() > 0)
- whereclause.append(" AND ");
+ if (whereclause.length() > 0) {
+ whereclause.insert(0, "(");
+ whereclause.append(") AND ");
+ }
whereclause.append(cell_title).append("=").append(value_evaluated);
} else {
if (gpo != null) {
- if (gpo.set_ValueOfColumnReturningBoolean(cell_title, cell_value)) {
- if (isErrorExpected) {
- wrong(getCell(i, 1));
- } else {
- right(getCell(i, 1));
+ String columnName = cell_title;
+ int idxcol = gpo.get_ColumnIndex(columnName);
+ if (idxcol < 0) {
+ wrong(i,0);
+ // column does not exist in dictionary - anyways try custom column in case it exists in table
+ gpo.set_CustomColumnReturningBoolean(columnName, cell_value);
+ } else {
+ Class> columnClass = poinfo.getColumnClass(idxcol);
+ // set value according to class
+ Object value = null;
+ if (org.compiere.util.Util.isEmpty(cell_value)) {
+ value = null;
+ } else if (org.compiere.util.Util.isEmpty(value_evaluated)) {
+ boolean ok = Util.evaluateError("Data not found",msgerror,isErrorExpected);
+ if (ok)
+ right(i,1);
+ else
+ wrong(i,1);
+ columnsOK = false;
+ continue;
+ } else if (columnClass == Boolean.class) {
+ if ("Y".equalsIgnoreCase(value_evaluated) || "true".equalsIgnoreCase(value_evaluated))
+ value = new Boolean(true);
+ else if ("N".equalsIgnoreCase(value_evaluated) || "false".equalsIgnoreCase(value_evaluated))
+ value = new Boolean(false);
+ else {
+ exception(getCell(i, 1), new Exception("Wrong value for boolean, allowed Y/N/true/false"));
+ continue;
+ }
+ } else if (columnClass == Integer.class) {
+ try {
+ Integer intid = Integer.parseInt(value_evaluated);
+ MColumn column = table.getColumn(cell_title);
+ if (intid > 0 && (DisplayType.isID(column.getAD_Reference_ID()) || column.getAD_Reference_ID() != DisplayType.ID)) {
+ // Evaluate the ID is from the actual client or system
+ String foreignTable = column.getReferenceTableName();
+ if (foreignTable != null) {
+ int foreignClient = DB.getSQLValueEx(null,
+ "SELECT AD_Client_ID FROM " + foreignTable + " WHERE " + foreignTable + "_ID=?",
+ intid);
+ if (foreignClient != 0 && foreignClient != Env.getAD_Client_ID(ctx)) {
+ boolean ok = Util.evaluateError("Data not found", msgerror, isErrorExpected);
+ if (ok)
+ right(i, 1);
+ else
+ wrong(i, 1);
+ columnsOK = false;
+ continue;
+ }
+ }
+ }
+ value = intid;
+ } catch (NumberFormatException e) {
+ exception(getCell(i, 1), e);
+ continue;
+ }
+ } else if (columnClass == BigDecimal.class) {
+ try {
+ value = new BigDecimal(value_evaluated);
+ } catch (Exception e) {
+ exception(getCell(i, 1), e);
+ continue;
+ }
+ } else if (columnClass == Timestamp.class) {
+ try {
+ value = Timestamp.valueOf(value_evaluated);
+ } catch (Exception e) {
+ exception(getCell(i, 1), e);
+ continue;
+ }
+ } else if (columnClass == byte[].class) {
+ exception(getCell(i, 1), new Exception("LOB not supported"));
+ continue;
+ } else {
+ value = value_evaluated;
+ }
+ try {
+ if (!gpo.set_ValueOfColumnReturningBoolean(columnName, value)) {
+ columnsOK = false;
+ boolean ok = Util.evaluateError("Cannot set value of column", cell_value, isErrorExpected);
+ if (ok)
+ right(getCell(i, 1));
+ else
+ exception(getCell(i, 1), new Exception("Cannot set value of column"));
+ }
+ } catch (Exception e) {
+ columnsOK = false;
+ boolean ok = Util.evaluateError(e.getMessage(), cell_value, isErrorExpected);
+ if (ok)
+ right(getCell(i, 1));
+ else
+ exception(getCell(i, 1), e);
}
}
-
- try {
- gpo.saveEx();
- } catch (Exception e) {
- boolean ok = Util.evaluateError(e.getMessage(),msgerror, isErrorExpected);
- if (ok)
- right(getCell(i, 1));
- else
- exception(getCell(i, 1),e);
- }
-
}
}
}
}
- }//end while
+ } //end for
+ if (tableOK && columnsOK && gpo != null) {
+ int i = rows-1;
+ if (!gpo.save()) {
+ StringBuilder msg = new StringBuilder();
+ Exception e = (Exception) ctx.get("org.compiere.util.CLogger.lastException");
+ if (e != null)
+ msg.append("Exception: "+ e.getMessage());
+ else {
+ ValueNamePair vnp = (ValueNamePair) ctx.get("org.compiere.util.CLogger.lastError");
+ if (vnp != null)
+ msg.append("Error: " + vnp.getName());
+ }
+ getCell(i, 1).addToBody(msg.toString());
+ boolean ok = Util.evaluateError(msg.toString(),msgerror,isErrorExpected);
+ if (ok)
+ right(i,1);
+ else
+ wrong(i,1);
+ } else {
+ if (isErrorExpected) {
+ wrong(i,1);
+ } else {
+ right(i, 1);
+ }
+ getCell(i, 1).addToBody(gpo.toString());
+ for (int idx = 0; idx < poinfo.getColumnCount(); idx++) {
+ String colname = poinfo.getColumnName(idx);
+ Object result = gpo.get_Value(colname);
+ if (result != null)
+ Env.setContext(ctx, windowNo, poinfo.getTableName().toLowerCase() + "." + colname.toLowerCase(), result.toString());
+ }
+ }
+ }
}
diff --git a/org.idempiere.fitnesse.fixture/src/org/idempiere/fitnesse/fixture/Util.java b/org.idempiere.fitnesse.fixture/src/org/idempiere/fitnesse/fixture/Util.java
index eb6b46f419..e222e02372 100644
--- a/org.idempiere.fitnesse.fixture/src/org/idempiere/fitnesse/fixture/Util.java
+++ b/org.idempiere.fitnesse.fixture/src/org/idempiere/fitnesse/fixture/Util.java
@@ -119,6 +119,8 @@ public class Util {
String tablename = cell_value.substring(5, pos_opsqb);
String where = cell_value.substring(pos_opsqb+1, pos_clsqb);
String whereParsed = Env.parseContext(ctx, windowNo, where, false);
+ if (ctx != null)
+ whereParsed = "(" + whereParsed + ") AND AD_Client_ID IN (0,"+Env.getAD_Client_ID(ctx)+")";
String columnname = cell_value.substring(pos_clsqb+2);
String newval = DB.getSQLValueStringEx(null, "SELECT " + columnname + " FROM " + tablename + " WHERE " + whereParsed);
if (parse != null)