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


Reply via email to