yous
@yous

Bitrix обновление остатков товара?

Обновление остатков делаем так:

$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 ?
  • Вопрос задан
  • 3254 просмотра
Пригласить эксперта
Ответы на вопрос 1
@pool
$updateQuantity = \Bitrix\Catalog\ProductTable::update($arFields["ID"], Array('QUANTITY' => $arData["PRODUCT_QUANTITY"], 'AVAILABLE' => 'Y'));
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы