Ограничение на добавлению товаров в корзину по наличию на складе

#
Ограничение на добавлению товаров в корзину по наличию на складе
Есть ли возможность ограничивать добавление товара в корзину тем количеством, что есть в наличии на складе? Или же для этого нужно дорабатывать код типовой динамической страницы и функцию addIntoCart() в JS?

Сейчас можно сколько угодно много добавлять товар в корзину, даже если его на складе всего 1 шт. на остатке.
Модератор
#
Re: Ограничение на добавлению товаров в корзину по наличию на складе
lezhenkin,
В коде настроек ТДС корзины у вас должен быть код:
// Проверять остаток на складе при добавлении в корзину
$bCheckStock = TRUE;
// ...
$oShop_Cart_Controller = Shop_Cart_Controller::instance();
$oShop_Cart_Controller->checkStock($bCheckStock);


если нет, то добавьте checkStock(TRUE);
#
Re: Ограничение на добавлению товаров в корзину по наличию на складе
hostcms, благодарю. Установил значение для переменной TRUE. То, что нужно.
#
Re: Ограничение на добавлению товаров в корзину по наличию на складе
А как добавить проверку остатка товара на складе для быстрого заказа?
В принципе, если товара нет на складе, можно отключить отображение кнопки быстрого заказа в xsl. Но если товар в остатке, необходимо ограничить количество товара в заказе. В идеале, дать пользователю об этом знать.
#
Re: Ограничение на добавлению товаров в корзину по наличию на складе
Можете в коде настроек ТДС корзины делать проверку внутри if (!is_null(Core_Array::getRequest('oneStepCheckout')))  по аналогии с контроллером стандартной корзины. Пример кода из контроллера:

$oShop_Item = Core_Entity::factory('Shop_Item')->find($oShop_Cart->shop_item_id);

         if (!is_null($oShop_Item->id) && $oShop_Item->active)
         {
            // Проверять остаток для обычных товаров
            if ($this->checkStock && $oShop_Item->type != 1)
            {
               $iRest = $oShop_Item->getRest() - $oShop_Item->getReserved();

               // Reduce quantity
               if ($iRest < $oShop_Cart->quantity)
               {
                  $oShop_Cart->quantity = $iRest;
                  $oShop_Cart->save();
               }

               // Check new quantity
               if ($oShop_Cart->quantity <= 0)
               {
                  $oShop_Cart->delete();
                  $oShop_Cart = NULL;
               }
            }


«Не выходи из комнаты, не совершай ошибку…»
Авторизация