• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/reservequantity.php
  • Класс: BitrixSaleReserveQuantity
  • Вызов: ReserveQuantity::onFieldModify
protected function onFieldModify($name, $oldValue, $value)
{
	if ($name === 'QUANTITY')
	{
		$collection = $this->getCollection();

		if ($collection->getQuantity() > $collection->getBasketItem()->getQuantity())
		{
			$result = new Result();

			return $result->addError(
				new MainError(
					MainLocalizationLoc::getMessage('SALE_RESERVE_QUANTITY_EXCEEDING_ERROR')
				)
			);
		}

		$result = InternalsCatalogProvider::tryReserve($this);
		if (!$result->isSuccess())
		{
			return $result;
		}
	}
	else if (
		$name === 'STORE_ID'
		&& $this->getQuantity() > 0
	)
	{
		throw new MainSystemException(
			MainLocalizationLoc::getMessage('SALE_RESERVE_QUANTITY_CHANGE_STORE_ERROR')
		);
	}

	return parent::onFieldModify($name, $oldValue, $value);
}