Программное обновление источника инвентаризации - PullRequest
0 голосов
/ 24 мая 2019

Я сейчас работаю над 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

Но источник не назначен этому продукту.

...