В стандартной корзине при выключенной опции "Разрешить отрицательное количество товара"


 при введении в корзине количества для товара ничего не  происходит , а просто устанавливается максимальное количество на складах, что вводит покупателей иногда в заблуждение, для этого я немножко кастомизировал компонент eshop.sale.basket.basket из типового интернет магазина.
  
Для начала скопируем компонент у свое рабочее пространство , далее в component.php ~ 105 строка  добавляем следующий код 

// получаем кол-во на всех складах
$arrProduct = CCatalogProduct::GetByID($arBasketItems["PRODUCT_ID"]); 
if($arFields["QUANTITY"] > $arrProduct['QUANTITY'])
{
	$_SESSION['QUAN_CART'][$arBasketItems["ID"]]['FULL'] = $arFields["QUANTITY"];
}
else
{
	unset($_SESSION['QUAN_CART'][$arBasketItems["ID"]]);
}
далее ~ 140 строка после блока
 
if (
strlen($_REQUEST["BasketRefresh"]) > 0 
|| strlen($_REQUEST["BasketOrder"]) > 0 
|| strlen($_REQUEST["action"]) > 0
)
{
	...
}
я вставил
if (strlen($_REQUEST["err"]) > 0 && strlen($_REQUEST["id"]) > 0)
{
	unset($_SESSION['QUAN_CART'][$_REQUEST["id"]]);
	LocalRedirect($APPLICATION->GetCurDir());
}

после чего в шаблоне компонента  добавляем код, template.php -> basket_items.php
в цикле вывода товаров 

foreach($arResult["ITEMS"]["AnDelCanBuy"] as $arBasketItems)
	{
		...
	}
вставляем
<?if(!empty($_SESSION['QUAN_CART'][$arBasketItems["ID"]])):?>
	<div  class="err-cart"> 
		Вы выбрали <?=$_SESSION['QUAN_CART'][$arBasketItems["ID"]]["FULL"]?> шт. 
но на складе есть <?=$arBasketItems["QUANTITY"]?> шт.
		<a href="?err=del&id=<?=$arBasketItems["ID"]?>"> Закрыть предупреждение</a> |
  <span> Добавить похожие товары</span>
	</div>
<?endif;?>
Вот и все теперь когда пользователь захочет больше товаров чем есть на складах он получит уведомление 

и если расширить возможности , можно предложить ему похожий товар,что не даст уйти покупателю не довольным )