[
https://issues.apache.org/jira/browse/OFBIZ-4501?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Sharan Foga updated OFBIZ-4501:
-------------------------------
Sprint: Bug Crush Event - 21/2/2015
> 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, 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 was sent by Atlassian JIRA
(v6.3.4#6332)