[ 
https://issues.apache.org/jira/browse/OFBIZ-4501?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13464499#comment-13464499
 ] 

Jacques Le Roux commented on OFBIZ-4501:
----------------------------------------

Hi Anil, did you get a chance to review?

I don't know if it's the case but [it was blocking Kiran to contribute 
more|http://markmail.org/message/qyqrcbxm2p4xtdhk], Kiran?
                
> Incorrect use of eca for create/updateShipment
> ----------------------------------------------
>
>                 Key: OFBIZ-4501
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-4501
>             Project: OFBiz
>          Issue Type: Bug
>          Components: product
>    Affects Versions: Release Branch 11.04, SVN trunk
>            Reporter: Kiran Gawde
>            Assignee: Jacques Le Roux
>         Attachments: OFBIZ-4501-ModifiedCreateUpdateShipmentService.patch, 
> OFBIZ-4501-ModifiedCreateUpdateShipmentService.patch, 
> OFBIZ-4501-ShipmentServiceXml.patch, OFBIZ-4501-ShipmentServiceXml.patch, 
> OFBIZ-4501-ShipmentServiceXml.patch
>
>
> createShipment service doesn't populate the facility and order info into 
> shipment. Instead it is handled by eca rules. This is wrong. ECA rules should 
> be used to update other objects or cause other actions and not update the 
> object that is being committed. This makes it difficult to traverse the code. 
> Can also cause bugs that are difficult troubleshoot. e.g: In this case, 
> facilities are populated in shipment by method 
> setShipmentSettingsFromPrimaryOrder, but eca rule checking for 
> originFacilityId gets executed before it is populated. Following eca rules 
> should be removed and instead the code should be added to 
> create/updateshipment methods.
>     <!-- if new originFacilityId or destinationFacilityId, get settings from 
> facilities -->
>     <eca service="createShipment" event="commit">
>         <condition field-name="originFacilityId" operator="is-not-empty"/>
>         <action service="setShipmentSettingsFromFacilities" mode="sync"/>
>     </eca>
>     <eca service="createShipment" event="commit">
>         <condition field-name="destinationFacilityId" 
> operator="is-not-empty"/>
>         <action service="setShipmentSettingsFromFacilities" mode="sync"/>
>     </eca>
>     <eca service="updateShipment" event="commit">
>         <condition-field field-name="originFacilityId" operator="not-equals" 
> to-field-name="oldOriginFacilityId"/>
>         <condition field-name="originFacilityId" operator="is-not-empty"/>
>         <action service="setShipmentSettingsFromFacilities" mode="sync"/>
>     </eca>
>     <eca service="updateShipment" event="commit">
>         <condition-field field-name="destinationFacilityId" 
> operator="not-equals" to-field-name="oldDestinationFacilityId"/>
>         <condition field-name="destinationFacilityId" 
> operator="is-not-empty"/>
>         <action service="setShipmentSettingsFromFacilities" mode="sync"/>
>     </eca>
>     <!-- if new primaryOrderId, get settings from order -->
>     <eca service="createShipment" event="commit">
>         <condition field-name="primaryOrderId" operator="is-not-empty"/>
>         <action service="setShipmentSettingsFromPrimaryOrder" mode="sync"/>
>     </eca>
>     <eca service="updateShipment" event="commit">
>         <condition-field field-name="primaryOrderId" operator="not-equals" 
> to-field-name="oldPrimaryOrderId"/>
>         <condition field-name="primaryOrderId" operator="is-not-empty"/>
>         <action service="setShipmentSettingsFromPrimaryOrder" mode="sync"/>
>     </eca>

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to