svn commit: r1500023 - in /ofbiz/branches/release10.04: ./ applications/product/script/org/ofbiz/product/cost/CostServices.xml

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r1500023 - in /ofbiz/branches/release10.04: ./ applications/product/script/org/ofbiz/product/cost/CostServices.xml

jacopoc
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">