Я сейчас работаю над 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;
}
Ожидаемый результат - назначить источник для этого продукта, как показано на рисунке ниже:
Но источник не назначен этому продукту.