以编程方式更新库存源

时间:2019-05-24 02:36:58

标签: magento magento-2.3

我目前正在研究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;
}

预期结果是将源分配给该产品,如下图所示:

enter image description here

但是没有将源分配给该产品。

0 个答案:

没有答案