Author: lektran
Date: Tue Nov 13 21:56:16 2007
New Revision: 594781

URL: http://svn.apache.org/viewvc?rev=594781&view=rev
Log:
Promo Code's use limit per customer was not being honoured for anonymous 
shoppers, resulted in a promotion being applied to the cart multiple times (up 
to the promo code use limit)

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=594781&r1=594780&r2=594781&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
 Tue Nov 13 21:56:16 2007
@@ -485,14 +485,17 @@
 
         // check promo code use limits, per customer, code
         Long codeUseLimitPerCustomer = 
productPromoCode.getLong("useLimitPerCustomer");
-        if (codeUseLimitPerCustomer != null && 
UtilValidate.isNotEmpty(partyId)) {
-            // check to see how many times this has been used for other orders 
for this customer, the remainder is the limit for this order
-            EntityCondition checkCondition = new 
EntityConditionList(UtilMisc.toList(
-                    new EntityExpr("productPromoCodeId", 
EntityOperator.EQUALS, productPromoCodeId),
-                    new EntityExpr("partyId", EntityOperator.EQUALS, partyId),
-                    new EntityExpr("statusId", EntityOperator.NOT_EQUAL, 
"ORDER_REJECTED"),
-                    new EntityExpr("statusId", EntityOperator.NOT_EQUAL, 
"ORDER_CANCELLED")), EntityOperator.AND);
-            long productPromoCustomerUseSize = 
delegator.findCountByCondition("ProductPromoUseCheck", checkCondition, null);
+        if (codeUseLimitPerCustomer != null) {
+            long productPromoCustomerUseSize = 0;
+            if (UtilValidate.isNotEmpty(partyId)) {
+                // check to see how many times this has been used for other 
orders for this customer, the remainder is the limit for this order
+                EntityCondition checkCondition = new 
EntityConditionList(UtilMisc.toList(
+                        new EntityExpr("productPromoCodeId", 
EntityOperator.EQUALS, productPromoCodeId),
+                        new EntityExpr("partyId", EntityOperator.EQUALS, 
partyId),
+                        new EntityExpr("statusId", EntityOperator.NOT_EQUAL, 
"ORDER_REJECTED"),
+                        new EntityExpr("statusId", EntityOperator.NOT_EQUAL, 
"ORDER_CANCELLED")), EntityOperator.AND);
+                productPromoCustomerUseSize = 
delegator.findCountByCondition("ProductPromoUseCheck", checkCondition, null);
+            }
             long perCustomerThisOrder = codeUseLimitPerCustomer.longValue() - 
productPromoCustomerUseSize;
             if (codeUseLimit == null || codeUseLimit.longValue() > 
perCustomerThisOrder) {
                 codeUseLimit = new Long(perCustomerThisOrder);


Reply via email to