• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/reservation/event/handler/basketitemupdateproductreservehandlers.php
  • Класс: BitrixSaleReservationEventHandlerBasketItemUpdateProductReserveHandlers
  • Вызов: BasketItemUpdateProductReserveHandlers::OnAfterSaleBasketItemSetField
static function OnAfterSaleBasketItemSetField(Event $event): void
{
	$name = $event->getParameter('NAME');
	$basketItem = $event->getParameter('ENTITY');
	if ($name !== 'PRODUCT_ID' || !($basketItem instanceof BasketItem))
	{
		return;
	}

	$reserveQuantityCollection = $basketItem->getReserveQuantityCollection();
	if (!isset($reserveQuantityCollection))
	{
		return;
	}

	$reserves = self::$basketReserves[$basketItem->getBasketCode()] ?? null;
	if (empty($reserves))
	{
		return;
	}

	foreach ($reserves as $reserve)
	{
		$reserveQuantity = $reserveQuantityCollection->create();
		$result = $reserveQuantity->setFields($reserve);

		if (!$result->isSuccess())
		{
			$reserveQuantity->setFieldsNoDemand($reserve);
			Provider::tryReserve($reserveQuantity);
		}
	}

	unset(self::$basketReserves[$basketItem->getBasketCode()]);
}