Uploaded image for project: 'OFBiz'
  1. OFBiz
  2. OFBIZ-4386

Order not completed when filled from more than one InventoryItem

    XMLWordPrintableJSON

Details

    Description

      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.

      Attachments

        1. OFBIZ-4386_IssuanceTests.patch
          19 kB
          Paul Foxworthy
        2. OFBIZ-4386_IssuanceServices.patch
          10 kB
          Paul Foxworthy
        3. OFBIZ-4386_IssuanceServices.patch
          11 kB
          Jacques Le Roux
        4. OFBIZ-4386_IssuanceServices.patch
          11 kB
          Jacques Le Roux
        5. OFBIZ-4386_IssuanceServices.patch
          10 kB
          Paul Foxworthy
        6. OFBIZ-4386_IssuanceServices.patch
          10 kB
          Jacques Le Roux

        Activity

          People

            jleroux Jacques Le Roux
            paulfoxworthy Paul Foxworthy
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: