我目前正在研究magento2.3 MSI。我已经安装了MSI,现在正在尝试对其进行操作。我创建了3个来源和1个库存。我需要将库存分配给货源。目前,我已经创建了用于导入库存的csv导入程序,但是在此过程中,我还想将源名称分配给现有产品。例如:我有诸如source1,source2和source3之类的资源,我不仅要分配更新数量和库存状态,还要分配源名称。
我使用了以下代码:
$product->setStockData(['qty' => 4,'manage_stock' => 1,'source_code' => 'source1','name' => 'My source 1','is_in_stock' => 1]);
$product->setQuantityAndStockStatus(['qty' => 4,'manage_stock' => 1,'source_code' => 'source1','name' => 'My source 1','is_in_stock' => 1]);
$product->save();
qty和is_in_stock运行良好,但是无法更新源名称以分配给该产品。 这段代码有什么问题吗?还是有其他方法可以解决这个问题。 如果有人知道解决方案,那将是不二之选。谢谢!
这是我的模型源代码:
public function execute(array $data)
{
/**
* @var Product $product
*/
$product = $this->productRepository->get($data[self::CSV_SKU]);
/** @var StockItemInterface $stockItem */
$stockItem = $this->stockRegistory->getStockItem($product->getId());
$attributes = [];
$product->setStockData(
[
'qty' => 4,
'stock_id' => 1,
'manage_stock' => 1,
'source_code' => 'hatagaya_store',
'name' => 'Bluelug Hatagaya store',
'is_in_stock' => 1
]
);
$product->setQuantityAndStockStatus(
[
'qty' => 4,
'stock_id' => 1,
'manage_stock' => 1,
'source_code' => 'hatagaya_store',
'name' => 'Bluelug Hatagaya store',
'is_in_stock' => 1
]
);
$product->save();
$stockItem->setUseConfigManageStock(1);
$this->stockItemRepository->save($stockItem);
$this->action->updateAttributes([$product->getId()], $attributes, 0);
return $product;
}
预期结果是将源分配给该产品,如下图所示:
但是没有将源分配给该产品。