Доступность товара и возможность его покупки
До выхода обновления catalog 16.0.3 доступность товара рассчитывалась «на лету» при выборке из базы. Вследствие этого нельзя было получить доступность товара с торговыми предложениями. Сейчас доступность рассчитывается в момент изменения характеристик товара и сохраняется в базе.
Простой товар, комплект или торговое предложение считаются недоступным, если:
- для него включен количественный учет
- запрещена покупка при отсутствии
- количество меньше либо равно нулю
Во всех остальных случаях товар доступен.
Товар с торговыми предложениями считается недоступным, если все его предложения недоступны (алгоритм расчета см. выше).
Для комплекта параметры, участвующие в расчете доступности, выставляются автоматически и не могут быть изменены.
Доступность не означает, что товар может быть куплен. Полный перечень условий для покупки:
- Товар доступен
- Элемент инфоблока активен
- Даты активности элемента отсутствуют, либо текущая дата попадает в диапазон активности
- Условия, завязанные на конкретного покупателя:
- минимальные права доступа – чтение
- у товара есть цены тех типов, по которым клиент может покупать
Доступность товара пересчитывается при вызове следующих методов:
- CIBlockElement::Add
- CIBlockElement::Update
- CIBlockElement:: Delete
- CIBlockElement::SetPropertyValues (при передаче свойства привязки торгового предложения к головному товару)
- CIBlockElement::SetPropertyValuesEx (при передаче свойства привязки торгового предложения к головному товару) - с версии iblock 17.6.5 + catalog 17.6.
- CCatalogProduct::Add
- CCatalogProduct::Update
- CCatalogProduct:: Delete
- \Bitrix\Catalog\Model\Product::add (catalog 17.6.0 и выше)
- \Bitrix\Catalog\Model\Product::update (catalog 17.6.0 и выше)
- \Bitrix\Catalog\Model\Product::delete (catalog 17.6.0 и выше)