[
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