Обновление количества товара на складе в Bitrix можно сделать так
В коде ниже происходит следующее:
- Сначала мы получаем ID склада, используя
XML_ID
из переменной$deliveryProp
. - Затем мы получаем текущее количество товара на этом складе для конкретного товара.
- Мы вычисляем новое количество товара, добавляя к текущему количеству количество из
$arAddProductXmlID['QUANTITY']
. - Наконец, мы обновляем количество товара на складе, используя метод
update
класса\Bitrix\Catalog\StoreProductTable
.
// Получить ID склада по XML_ID
$deliveryPropertyXmlId = $deliveryProp;
$storeData = Bitrix\Catalog\StoreTable::getList(array(
'filter' => array('XML_ID' => $deliveryPropertyXmlId),
'select' => array('ID'),
))->fetch();
$storeId = $storeData['ID'];
// Получить текущее количество товара на складе
$productId = $arFields['ID'];
$storeProductData = \Bitrix\Catalog\StoreProductTable::getList(array(
'filter' => array('PRODUCT_ID' => $productId, 'STORE_ID' => $storeId),
))->fetch();
$currentAmount = $storeProductData['AMOUNT'];
// Добавить количество товара, которое нужно при добавлении
$additionalQuantity = $arAddProductXmlID['QUANTITY'];
$newAmount = $currentAmount + $additionalQuantity;
// Обновить количество товара на складе
$updateFields = Array(
"PRODUCT_ID" => $productId, //ID товара
"STORE_ID" => $storeId, //ID склада
"AMOUNT" => $newAmount, //Количество
'AVAILABLE' => 'Y',
);
\Bitrix\Catalog\StoreProductTable::update($storeProductData['ID'], $updateFields);