Author: bibryam
Date: Wed Jan 2 15:40:27 2008 New Revision: 608283 URL: http://svn.apache.org/viewvc?rev=608283&view=rev Log: Applied (modified) patch from Rashko Rejmer, OFBIZ-1520: "X Product for Y%" promo action does not calculate properly discounts for rental order items. I also fixed the same bug for the other promotion actions. 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=608283&r1=608282&r2=608283&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 Wed Jan 2 15:40:27 2008 @@ -1250,7 +1250,7 @@ // create an adjustment and add it to the cartItem that implements the promotion action double percentModifier = productPromoAction.get("amount") == null ? 0.0 : (productPromoAction.getDouble("amount").doubleValue()/100.0); - double lineAmount = quantityUsed * cartItem.getBasePrice(); + double lineAmount = quantityUsed * cartItem.getBasePrice() * cartItem.getRentalAdjustment(); double discountAmount = -(lineAmount * percentModifier); discountAmountTotal += discountAmount; // not doing this any more, now distributing among conditions and actions (see call below): doOrderItemPromoAction(productPromoAction, cartItem, discountAmount, "amount", delegator); @@ -1295,8 +1295,8 @@ // create an adjustment and add it to the cartItem that implements the promotion action double discount = productPromoAction.get("amount") == null ? 0.0 : productPromoAction.getDouble("amount").doubleValue(); // don't allow the discount to be greater than the price - if (discount > cartItem.getBasePrice()) { - discount = cartItem.getBasePrice(); + if (discount > cartItem.getBasePrice() * cartItem.getRentalAdjustment()) { + discount = cartItem.getBasePrice() * cartItem.getRentalAdjustment(); } double discountAmount = -(quantityUsed * discount); discountAmountTotal += discountAmount; @@ -1337,7 +1337,7 @@ double quantityUsed = cartItem.addPromoQuantityCandidateUse(quantityDesired, productPromoAction, false); if (quantityUsed > 0) { quantityDesired -= quantityUsed; - totalAmount += quantityUsed * cartItem.getBasePrice(); + totalAmount += quantityUsed * cartItem.getBasePrice() * cartItem.getRentalAdjustment(); cartItemsUsed.add(cartItem); } } @@ -1396,7 +1396,7 @@ } // get difference between basePrice and specialPromoPrice and adjust for that - double difference = -(cartItem.getBasePrice() - cartItem.getSpecialPromoPrice().doubleValue()); + double difference = -(cartItem.getBasePrice() * cartItem.getRentalAdjustment() - cartItem.getSpecialPromoPrice().doubleValue()); if (difference != 0.0) { double quantityUsed = cartItem.addPromoQuantityCandidateUse(cartItem.getQuantity(), productPromoAction, false); |
Free forum by Nabble | Edit this page |