Author: jacopoc Date: Fri Jul 5 14:34:21 2013 New Revision: 1500023 URL: http://svn.apache.org/r1500023 Log: Applied fix from trunk for revision: 948387 ===
Some changes to address issue of conflicting fromDate when expiring one ProductAverageCost record and creating another, this also checks for sub-second difference between old fromDate and new so that this stuff works more reliably on funny databases like MySQL Modified: ofbiz/branches/release10.04/ (props changed) ofbiz/branches/release10.04/applications/product/script/org/ofbiz/product/cost/CostServices.xml Propchange: ofbiz/branches/release10.04/ ------------------------------------------------------------------------------ Merged /ofbiz/trunk:r948387 Modified: ofbiz/branches/release10.04/applications/product/script/org/ofbiz/product/cost/CostServices.xml URL: http://svn.apache.org/viewvc/ofbiz/branches/release10.04/applications/product/script/org/ofbiz/product/cost/CostServices.xml?rev=1500023&r1=1500022&r2=1500023&view=diff ============================================================================== --- ofbiz/branches/release10.04/applications/product/script/org/ofbiz/product/cost/CostServices.xml (original) +++ ofbiz/branches/release10.04/applications/product/script/org/ofbiz/product/cost/CostServices.xml Fri Jul 5 14:34:21 2013 @@ -549,6 +549,8 @@ under the License. <field-map field-name="organizationPartyId"/> </entity-and> <first-from-list list="productAverageCostList" entry="productAverageCost"/> + + <!-- <log level="always" message="In updateProductAverageCostOnReceiveInventory found productAverageCost: ${productAverageCost}"/> --> <set-service-fields service-name="createProductAverageCost" map="parameters" to-map="productAverageCostMap"/> <set field="productAverageCostMap.productAverageCostTypeId" value="SIMPLE_AVG_COST"/> @@ -560,6 +562,7 @@ under the License. <set-service-fields service-name="updateProductAverageCost" map="productAverageCost" to-map="updateProductAverageCostMap"/> <now-timestamp field="updateProductAverageCostMap.thruDate"/> <call-service service-name="updateProductAverageCost" in-map-name="updateProductAverageCostMap"/> + <set field="serviceInMap.productId" from-field="parameters.productId"/> <set field="serviceInMap.facilityId" from-field="parameters.facilityId"/> <call-service service-name="getInventoryAvailableByFacility" in-map-name="serviceInMap"> @@ -572,10 +575,22 @@ under the License. <calculate field="productAverageCostMap.averageCost" type="BigDecimal" decimal-scale="${roundingDecimals}" rounding-mode="${roundingMode}"> <calcop operator="get" field="productAverageCostMap.averageCost"/> </calculate> + + <!-- ensure that the new ProductAverageCost record has a different PK than the previous one by setting the fromDate to now, plus an offset if needed --> + <now-timestamp field="nowTimestamp"/> + <set field="timeDiff" value="${groovy: return nowTimestamp.getTime() - productAverageCost.fromDate.getTime()}" type="Long"/> + <if-compare field="timeDiff" operator="less-equals" value="1000" type="Long"> + <set-calendar field="productAverageCostMap.fromDate" from-field="nowTimestamp" seconds="+1"/> + <else> + <set field="productAverageCostMap.fromDate" from-field="nowTimestamp"/> + </else> + </if-compare> </else> </if-empty> - <call-service service-name="createProductAverageCost" in-map-name="productAverageCostMap"/> - <log level="info" message="For facilityId ${parameters.facilityId}, Average cost of product ${parameters.productId} is set from ${updateProductAverageCostMap.averageCost} to ${productAverageCostMap.averageCost}"/> + + <!-- <log level="always" message="In updateProductAverageCostOnReceiveInventory creating new average cost with productAverageCostMap: ${productAverageCostMap}"/> --> + <call-service service-name="createProductAverageCost" in-map-name="productAverageCostMap"/> + <log level="info" message="For facilityId ${parameters.facilityId}, Average cost of product ${parameters.productId} is set from ${updateProductAverageCostMap.averageCost} to ${productAverageCostMap.averageCost}"/> </simple-method> <simple-method method-name="getProductAverageCost" short-description="Service to get the average cost of product">