[ 
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

        

Reply via email to