Author: jonesde
Date: Sun Mar 13 18:28:41 2011
New Revision: 1081185

URL: http://svn.apache.org/viewvc?rev=1081185&view=rev
Log:
Fixed bug causing promotions with text condValues to blow up, causing other 
promos to also not run

Modified:
    
ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/product/ProductPromoWorker.java

Modified: 
ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/product/ProductPromoWorker.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/product/ProductPromoWorker.java?rev=1081185&r1=1081184&r2=1081185&view=diff
==============================================================================
--- 
ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/product/ProductPromoWorker.java
 (original)
+++ 
ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/product/ProductPromoWorker.java
 Sun Mar 13 18:28:41 2011
@@ -1295,20 +1295,22 @@ public class ProductPromoWorker {
         BigDecimal amountOff = listPrice.subtract(basePrice);
         BigDecimal percentOff = amountOff.divide(listPrice, 2, 
BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100L));
 
-        BigDecimal condValueBigDecimal = new BigDecimal(condValue);
-
         Integer compareBase = null;
 
         if ("PPIP_LPMUP_AMT".equals(inputParamEnumId)) {
+            // NOTE: only check this after we know it's this type of cond, 
otherwise condValue may not be a number
+            BigDecimal condValueBigDecimal = new BigDecimal(condValue);
             compareBase = 
Integer.valueOf(amountOff.compareTo(condValueBigDecimal));
         } else if ("PPIP_LPMUP_PER".equals(inputParamEnumId)) {
+            // NOTE: only check this after we know it's this type of cond, 
otherwise condValue may not be a number
+            BigDecimal condValueBigDecimal = new BigDecimal(condValue);
             compareBase = 
Integer.valueOf(percentOff.compareTo(condValueBigDecimal));
         } else {
             // condition doesn't apply to individual item, always passes
             return true;
         }
 
-        Debug.logInfo("Checking condition for item productId=" + 
cartItem.getProductId() + ", listPrice=" + listPrice + ", basePrice=" + 
basePrice + ", amountOff=" + amountOff + ", percentOff=" + percentOff + ", 
condValueBigDecimal=" + condValueBigDecimal + ", compareBase=" + compareBase + 
", productPromoCond=" + productPromoCond, module);
+        Debug.logInfo("Checking condition for item productId=" + 
cartItem.getProductId() + ", listPrice=" + listPrice + ", basePrice=" + 
basePrice + ", amountOff=" + amountOff + ", percentOff=" + percentOff + ", 
condValue=" + condValue + ", compareBase=" + compareBase + ", 
productPromoCond=" + productPromoCond, module);
 
         if (compareBase != null) {
             int compare = compareBase.intValue();


Reply via email to