Skip to content

BulkInventoryTransfer fails for new inventory sources when products have no source item #3423

Open
@brian-labelle

Description

@brian-labelle

Preconditions (*)

  1. Adobe Commerce 2.4.7-p4
  2. Sample data installed
  3. Some products created via rest API

Steps to reproduce (*)

  1. Create two new inventory sources
  2. Create a new inventory stock
  3. Assign the two new inventory sources to the stock
  4. Navigate to the products list in the admin panel
  5. Select all items and choose to "Transfer Inventory to Source"
  6. Choose to transfer to one of the new inventory sources, and check to unassign from the original source

Expected result (*)

  1. Inventory should be transferred and a success message should display

Actual result (*)

  1. Error message is displayed Warning: Trying to access array offset on value of type null in {path}/vendor/magento/module-inventory-catalog/Model/ResourceModel/BulkInventoryTransfer.php on line 131
  2. Inventory is not transferred

Investigation

The code from the following method looks off:

When $dstSourceItemQty is null, which seems likely to be the case for a brand new inventory source, it is by default set to 0:

$dstSourceItemQty = $dstSourceItem === null ? 0.0 : (float) $dstSourceItem[SourceItemInterface::QUANTITY];

As a result, the first elseif in this conditional passes, which means that it will try to read the status array key from $dstSourceItem, which is null, which causes the error (line 131).

if ($orgSourceItem !== null) {
    $status = (int) $orgSourceItem[SourceItemInterface::STATUS];
} elseif ($dstSourceItemQty !== null) {
    $status = (int) $dstSourceItem[SourceItemInterface::STATUS];
} else {
    $status = (int) SourceItemInterface::STATUS_OUT_OF_STOCK;
}

It seems this method is not properly handing the use case of a new inventory source, and if you have products that were created by the API that might not yet have a source item in the database.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions