Author: jacopoc
Date: Wed Nov 14 02:05:54 2007 New Revision: 594818 URL: http://svn.apache.org/viewvc?rev=594818&view=rev Log: The list of OrderItemPriceInfos returned by the price rule execution was overriding the existing list. Modified: ofbiz/trunk/applications/product/src/org/ofbiz/product/price/PriceServices.java Modified: ofbiz/trunk/applications/product/src/org/ofbiz/product/price/PriceServices.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/src/org/ofbiz/product/price/PriceServices.java?rev=594818&r1=594817&r2=594818&view=diff ============================================================================== --- ofbiz/trunk/applications/product/src/org/ofbiz/product/price/PriceServices.java (original) +++ ofbiz/trunk/applications/product/src/org/ofbiz/product/price/PriceServices.java Wed Nov 14 02:05:54 2007 @@ -483,7 +483,6 @@ boolean validPriceFound = false; double defaultPrice = 0; List orderItemPriceInfos = FastList.newInstance(); - List additionalAdjustments = FastList.newInstance(); if (defaultPriceValue != null) { // If a price calc formula (service) is specified, then use it to get the unit price if (UtilValidate.isNotEmpty(defaultPriceValue.getString("customPriceCalcService"))) { @@ -504,7 +503,6 @@ if (!ServiceUtil.isError(outMap)) { Double calculatedDefaultPrice = (Double)outMap.get("price"); orderItemPriceInfos = (List)outMap.get("orderItemPriceInfos"); - //additionalAdjustments = (List)outMap.get("additionalAdjustments"); if (UtilValidate.isNotEmpty(calculatedDefaultPrice)) { defaultPrice = calculatedDefaultPrice.doubleValue(); validPriceFound = true; @@ -625,6 +623,15 @@ averageCostValue, productId, virtualProductId, prodCatalogId, productStoreGroupId, webSiteId, partyId, new Double(1.0), currencyUomId, delegator, nowTimestamp); result.putAll(calcResults); + // The orderItemPriceInfos out parameter requires a special treatment: + // the list of OrderItemPriceInfos generated by the price rule is appended to + // the existing orderItemPriceInfos list and the aggregated list is returned. + List orderItemPriceInfosFromRule = (List)calcResults.get("orderItemPriceInfos"); + if (UtilValidate.isNotEmpty(orderItemPriceInfosFromRule)) { + orderItemPriceInfos.addAll(orderItemPriceInfosFromRule); + } + result.put("orderItemPriceInfos", orderItemPriceInfos); + Map errorResult = addGeneralResults(result, competitivePriceValue, specialPromoPriceValue, productStore, checkIncludeVat, currencyUomId, productId, quantity, partyId, dispatcher); if (errorResult != null) return errorResult; @@ -634,6 +641,15 @@ averageCostValue, productId, virtualProductId, prodCatalogId, productStoreGroupId, webSiteId, partyId, new Double(quantity), currencyUomId, delegator, nowTimestamp); result.putAll(calcResults); + // The orderItemPriceInfos out parameter requires a special treatment: + // the list of OrderItemPriceInfos generated by the price rule is appended to + // the existing orderItemPriceInfos list and the aggregated list is returned. + List orderItemPriceInfosFromRule = (List)calcResults.get("orderItemPriceInfos"); + if (UtilValidate.isNotEmpty(orderItemPriceInfosFromRule)) { + orderItemPriceInfos.addAll(orderItemPriceInfosFromRule); + } + result.put("orderItemPriceInfos", orderItemPriceInfos); + Map errorResult = addGeneralResults(result, competitivePriceValue, specialPromoPriceValue, productStore, checkIncludeVat, currencyUomId, productId, quantity, partyId, dispatcher); if (errorResult != null) return errorResult; |
Free forum by Nabble | Edit this page |