Author: jleroux
Date: Sat Oct 3 08:35:06 2009 New Revision: 821270 URL: http://svn.apache.org/viewvc?rev=821270&view=rev Log: A patch from Wickersheimer Jeremy "promotion giving gift items and inventory check." (https://issues.apache.org/jira/browse/OFBIZ-2991) - OFBIZ-2991 The code in the ProductPromoWorker should be checking if a git item is available before adding to the order, but it only checks the quantity in the inventory without taking into account the quantity already in the cart. 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=821270&r1=821269&r2=821270&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 Sat Oct 3 08:35:06 2009 @@ -1231,7 +1231,15 @@ // check inventory on this product, make sure it is available before going on //NOTE: even though the store may not require inventory for purchase, we will always require inventory for gifts try { - Map invReqResult = dispatcher.runSync("isStoreInventoryAvailable", UtilMisc.<String, Object>toMap("productStoreId", productStoreId, "productId", productId, "product", product, "quantity", quantity)); + // get the quantity in cart for inventory check + BigDecimal quantityAlreadyInCart = BigDecimal.ZERO; + if (cart != null) { + List<ShoppingCartItem> matchingItems = cart.findAllCartItems(productId); + for (ShoppingCartItem item : matchingItems) { + quantityAlreadyInCart = quantityAlreadyInCart.add(item.getQuantity()); + } + } + Map invReqResult = dispatcher.runSync("isStoreInventoryAvailable", UtilMisc.<String, Object>toMap("productStoreId", productStoreId, "productId", productId, "product", product, "quantity", quantity.add(quantityAlreadyInCart))); if (ServiceUtil.isError(invReqResult)) { Debug.logError("Error calling isStoreInventoryAvailable service, result is: " + invReqResult, module); throw new CartItemModifyException((String) invReqResult.get(ModelService.ERROR_MESSAGE)); @@ -1260,7 +1268,15 @@ String optionProductId = (String) optionProductIdIter.next(); try { - Map invReqResult = dispatcher.runSync("isStoreInventoryAvailable", UtilMisc.<String, Object>toMap("productStoreId", productStoreId, "productId", optionProductId, "product", product, "quantity", quantity)); + // get the quantity in cart for inventory check + BigDecimal quantityAlreadyInCart = BigDecimal.ZERO; + if (cart != null) { + List<ShoppingCartItem> matchingItems = cart.findAllCartItems(optionProductId); + for (ShoppingCartItem item : matchingItems) { + quantityAlreadyInCart = quantityAlreadyInCart.add(item.getQuantity()); + } + } + Map invReqResult = dispatcher.runSync("isStoreInventoryAvailable", UtilMisc.<String, Object>toMap("productStoreId", productStoreId, "productId", optionProductId, "product", product, "quantity", quantity.add(quantityAlreadyInCart))); if (ServiceUtil.isError(invReqResult)) { Debug.logError("Error calling isStoreInventoryAvailable service, result is: " + invReqResult, module); throw new CartItemModifyException((String) invReqResult.get(ModelService.ERROR_MESSAGE)); |
Free forum by Nabble | Edit this page |