Обновление остатков делаем так:
$rsStoreProduct = \Bitrix\Catalog\StoreProductTable::getList(array(
'filter' => array('=PRODUCT_ID'=>$arFields["ID"],'STORE.ACTIVE'=>'Y'),
));
if($arStoreProduct=$rsStoreProduct->fetch()){
$updateStore = \Bitrix\Catalog\StoreProductTable::update($arStoreProduct['ID'], Array('PRODUCT_ID'=>intval($arFields["ID"]),'STORE_ID'=>1,'AMOUNT' => $arData["PRODUCT_QUANTITY"]));
}else{
$addStore = \Bitrix\Catalog\StoreProductTable::add(Array('PRODUCT_ID'=>intval($arFields["ID"]),'STORE_ID'=>1,'AMOUNT' => $arData["PRODUCT_QUANTITY"]));
}
$updateQuantity = \Bitrix\Catalog\ProductTable::update($arFields["ID"], Array('QUANTITY' => $arData["PRODUCT_QUANTITY"]));
У товаров обновления на складе и кол-ве обновляются, всё норм. но вот заметили такой баг, если у товара изначально был остаток 0 и после обновления он изменился на положительный, то купить его всё равно нельзя, система пишет
Ошибка добавления товара в корзину
Товар отсутствует
Если зайти в товар через админку и пересохранить его, то всё норм становится.
Предположение, что не по всем связям мы обновляем остаток, вопрос как сделать правильное обновление остатка через API ?