You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ofbiz.apache.org by "Jacques Le Roux (JIRA)" <ji...@apache.org> on 2011/09/11 23:14:08 UTC

[jira] [Updated] (OFBIZ-4386) Order not completed when filled from more than one InventoryItem

     [ https://issues.apache.org/jira/browse/OFBIZ-4386?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jacques Le Roux updated OFBIZ-4386:
-----------------------------------

    Attachment: OFBIZ-4386_IssuanceServices.patch

Hi Paul,

The test works perfectly. I have begun to review the code. I made some changes (mostly cosmetic) in IssuanceServices.xml:
* <set field="shipmentId" from-field="parameters.shipmentId"/> was duplicated in IssuanceServices.xml? Certainly due to a not updated revision when doing the patch (the patch applied after a fuzz factor)
* <log level="debug" message="qtyForShipmentItem: ${qtyForShipmentItem}"/> debug is not a valid level, I put warning
* I added short-description="Calculcate quantity for a shipment item - meant to be called in-line" to simple-method calcQtyForShipmentItemInline". It may be useful outside of the context (outside of the file I mean, like artifact info, etc.)
* I removed  <!--<call-simple-method method-name="findCreateIssueShipmentItem"/>-->

For now I attach the modified patch, to be continued...



> Order not completed when filled from more than one InventoryItem
> ----------------------------------------------------------------
>
>                 Key: OFBIZ-4386
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-4386
>             Project: OFBiz
>          Issue Type: Bug
>    Affects Versions: SVN trunk
>         Environment: rev 1163479
>            Reporter: Paul Foxworthy
>            Assignee: Jacques Le Roux
>              Labels: issuance, order, shipment
>         Attachments: OFBIZ-4386_IssuanceServices.patch, OFBIZ-4386_IssuanceServices.patch, OFBIZ-4386_IssuanceTests.patch
>
>
> There is a nasty bug in IssuanceServices in the situation where the order is filled from more than one InventoryItem. When the order is created, there are OrderItemShipGrpInvRes reservations created for all the inventory items needed to fill the order.
> In the simple method issueOrderItemShipGrpInvResToShipment in IssuanceServices, at line 173 (https://fisheye6.atlassian.com/browse/ofbiz/trunk/applications/product/script/org/ofbiz/shipment/issuance/IssuanceServices.xml?hb=true#to173), there is an assumption that if the OrderShipment already exists, we are some sort of adjustment, and we should adjust the OrderShipment quantity by the difference between the old OrderShipment quantity and the new one. This all works fine in the situation where there is only one InventoryItem needed to fill the order. However, if there are two or more InventoryItems, the simple method is called twice, and an incorrect quantity is calculated.
> The crux of the problem is that OrderShipment doesn't care about InventoryItems, so there will be only one OrderShipment row for a given product. In contrast, ItemIssuance does care about InventoryItems, so there will be more than one if the product is supplied from more than one InventoryItem. The ItemIssuance code doesn't take account of this distinction.
> I have provided two patches. One is a new unit test that exemplifies the bug. If you just apply this patch to trunk, the unit test will fail with an OrderShipment quantity of 4 when it ought to be 6.
> The other patch is my fix for IssuanceServices, which now looks for a relevant ItemIssuance to decide if we are adjusting quantities, or creating a new ItemIssuance (and possibly a new OrderShipment).
> Feedback welcomed.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira