Magento 2.3: Как программно установить количество для нескольких источников (инвентаризация нескольких источников)
У меня есть сайт с 3 источниками инвентаризации. Я хочу добавить и обновить инвентарь продуктов для каждого источника по артикулу продукта. Пожалуйста, помогите мне
3 answers
Я не знаю, получите вы, ребята, решение или нет, но вот оно.
Вот решение https://magento.stackexchange.com/a/262873/49826
Я просто использую вызов API, чтобы создать или обновить запас. код следующий:
$access_token = '4v81lfihtkqanfdr6798zj352qyuyx1x';
$url = 'http://magento2.local/index.php/rest/V1/inventory/source-items';
$ch = curl_init($url);
$body = json_encode(['sourceItems' =>[
['source_code' => 'default', 'sku' => '24-MB01', 'quantity'=>555, 'status'=>1],
['source_code' => 'la', 'sku' => '24-MB01', 'quantity' => 222, 'status' => 1],
['source_code' => 'default', 'sku' => '24-MB04', 'quantity'=>444, 'status'=>1],
['source_code' => 'la', 'sku' => '24-MB04', 'quantity' => 111, 'status' => 1],
['source_code' => 'default', 'sku' => '24-MB03', 'quantity'=>333, 'status'=>1],
['source_code' => 'la', 'sku' => '24-MB03', 'quantity' => 111, 'status' => 1],
]]);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Authorization: Bearer ' . $access_token));
$result = curl_exec($ch);
var_dump($result);
Вы можете использовать интерфейс SourceItemsSaveInterface для следующих целей: https://github.com/magento-engcom/msi/blob/2.3-develop/app/code/Magento/InventoryApi/Api/SourceItemsSaveInterface.php
interface SourceItemsSaveInterface
{
/**
* Save Multiple Source item data
*
* @param \Magento\InventoryApi\Api\Data\SourceItemInterface[] $sourceItems
* @return void
* @throws \Magento\Framework\Exception\InputException
* @throws \Magento\Framework\Validation\ValidationException
* @throws \Magento\Framework\Exception\CouldNotSaveException
*/
public function execute(array $sourceItems): void;
}
И передайте массив \Magento\inventoryapi\Api\Data\sourceiteminterface[] в качестве параметра, каждый элемент источника представляет инвентаризацию определенного продукта в определенном источнике.