diff --git a/base/src/org/compiere/wf/MWFNextCondition.java b/base/src/org/compiere/wf/MWFNextCondition.java
index 784bdd56e9..cc158c4b6c 100644
--- a/base/src/org/compiere/wf/MWFNextCondition.java
+++ b/base/src/org/compiere/wf/MWFNextCondition.java
@@ -27,6 +27,9 @@ import org.compiere.model.*;
*
* @author Jorg Janke
* @version $Id: MWFNextCondition.java,v 1.3 2006/07/30 00:51:05 jjanke Exp $
+ *
+ * @author Teo Sarca, SC ARHIPAC SERVICE SRL
+ *
BF [ 1943720 ] WF Next Condition: handling boolean values is poor
*/
public class MWFNextCondition extends X_AD_WF_NextCondition
{
@@ -97,6 +100,8 @@ public class MWFNextCondition extends X_AD_WF_NextCondition
boolean result = false;
if (valueObj instanceof Number)
result = compareNumber ((Number)valueObj, value1, value2);
+ else if (valueObj instanceof Boolean)
+ result = compareBoolean((Boolean)valueObj, value1, value2);
else
result = compareString(valueObj, value1, value2);
//
@@ -222,6 +227,28 @@ public class MWFNextCondition extends X_AD_WF_NextCondition
throw new IllegalArgumentException("Unknown Operation=" + op);
} // compareString
+ /**
+ * Compare Boolean
+ * @param valueObj comparator
+ * @param value1S first value
+ * @param value2S second value
+ * @return true if operation
+ */
+ private boolean compareBoolean (Boolean valueObj, String value1S, String value2S)
+ {
+ m_numeric = false;
+ //
+ Boolean value1B = Boolean.valueOf(value1S) || "Y".equalsIgnoreCase(value1S);
+ //
+ String op = getOperation();
+ if (OPERATION_Eq.equals(op))
+ return valueObj.equals(value1B);
+ else if (OPERATION_NotEq.equals(op))
+ return !valueObj.equals(value1B);
+ else
+ throw new IllegalArgumentException("Not Supported =" + op);
+ } // compareBoolean
+
/**
* String Representation
* @return info