- CCatalogProductProvider
- Методы класса
- Пользовательские комментарии
- CatalogProvider метод getProductData не вызывается. Почему?
- Новый ПродуктПровайдерКласс не понимает групп пользователя
- Новый ПродуктПровайдерКласс не понимает групп пользователя
- ReserveProduct
- Параметры вызова
- Возвращаемое значение
- Пользовательские комментарии
- OrderProduct
- Описание и параметры
- Параметры вызова
- Возвращаемое значение
- Пользовательские комментарии
CCatalogProductProvider
Класс CCatalogProductProvider устарел с версии 17.5.0 модуля catalog. Используйте \Bitrix\Catalog\Product\CatalogProvider .
Методы класса
| Метод | Описание | С версии |
|---|---|---|
| CheckProductBarcode | Метод осуществляет проверку валидности штрихкода для отгрузки товара. | 12.5.0 |
| DeductProduct | Метод осуществляет отгрузку или отмену отгрузки товара. | 12.5.0 |
| DeliverProduct | Метод возвращает массив информации о товаре для создания/продления подписки. | 12.5.0 |
| GetProductData | Метод возвращает информацию о товаре из каталога. | 12.5.0 |
| GetProductStores | Метод возвращает информацию о количестве складов, с которых возможно списание товара. | 12.5.0 |
| GetSetItems | Метод возвращает состав комплекта для добавления в корзину. | 14.0.0 |
| GetStoresCount | Метод возвращает количество складов. | 12.5.0 |
| OrderProduct | Метод метод возвращает информацию о товаре из каталоге, вызывается после создания заказа. | 12.5.0 |
| RecurringOrderProduct | Метод получает данные товара для продления подписки. | 12.5.0 |
| ReserveProduct | Метод осуществляет резервирование или отмену резервирования товара. | 12.5.0 |
| ViewProduct | Метод возвращает информацию о просмотренном товаре для сохранения ее в магазине. | 12.5.0 |
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.
Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
Источник
CatalogProvider метод getProductData не вызывается. Почему?
Правило для работы в корзине не подходит, т.к. данные переменчивы (ID товара).
Нужно ,чтобы при добавлении товара на позицию была скидка, в зависимости от определенных условий.
Как правильно реализовать функционал скидок?
Попробовал через CATALOG_PROVIDER_CLASS, однако данный метод не срабатывает.
Привожу код ниже:
Но метод getProductData класса не вызывается.
- Вопрос задан более года назад
- 410 просмотров
PetrPo, верно заметил.
Но при попытке добавить товар в корзину
2020-09-15 17:13:04 — Host: site.ru:443 — UNCAUGHT_EXCEPTION — [Error]
Call to a member function isSuccess() on null (0)
/crm/bitrix/modules/sale/lib/internals/providerbuilderbase.php:139
#0: Bitrix\Sale\Internals\ProviderBuilderBase->getProductData(string)
/crm/bitrix/modules/sale/lib/internals/providercreator.php:423
#1: Bitrix\Sale\Internals\ProviderCreator->callBuilderMethod(string, string)
/crm/bitrix/modules/sale/lib/internals/providercreator.php:227
#2: Bitrix\Sale\Internals\ProviderCreator->getProductData()
/crm/bitrix/modules/sale/lib/internals/catalog/provider.php:56
#3: Bitrix\Sale\Internals\Catalog\Provider::getProductData(array, array)
/crm/bitrix/modules/sale/lib/basket/baserefreshstrategy.php:370
#4: Bitrix\Sale\Basket\BaseRefreshStrategy->getProviderResult(object, array)
/crm/bitrix/modules/sale/lib/basket/singlerefreshstrategy.php:67
#5: Bitrix\Sale\Basket\SingleRefreshStrategy->getProductData(object)
/crm/bitrix/modules/sale/lib/basket/baserefreshstrategy.php:410
#6: Bitrix\Sale\Basket\BaseRefreshStrategy->refresh(object)
/crm/bitrix/modules/sale/lib/basketbase.php:770
#7: Bitrix\Sale\BasketBase->refresh(object)
/bitrix/modules/sale/lib/basketitembase.php:745
#8: Bitrix\Sale\BasketItemBase->onFieldModify(string, double, double)
/crm/bitrix/modules/sale/lib/basketitem.php:934
#9: Bitrix\Sale\BasketItem->onFieldModify(string, NULL, double)
/crm/bitrix/modules/sale/lib/internals/entity.php:279
#10: Bitrix\Sale\Internals\Entity->setField(string, double)
/crm/bitrix/modules/sale/lib/basketitembase.php:412
#11: Bitrix\Sale\BasketItemBase->setField(string, double)
/crm/bitrix/modules/catalog/lib/product/basket.php:591
#12: Bitrix\Catalog\Product\Basket::add(object, array, array, array)
/crm/bitrix/modules/catalog/lib/product/basket.php:149
#13: Bitrix\Catalog\Product\Basket::addProductToBasket(object, array, array)
/crm/local/lib/basket/mybaskethelper.php:396
#14: MyBasketHelper::addToBasket(string, string, boolean)
/crm/api/cart.php:82
———-
Mikhail K, ну исключение понятно у тебя getProductData ничего не возвращает
Источник
Новый ПродуктПровайдерКласс не понимает групп пользователя
Новый ПродуктПровайдерКласс не понимает групп пользователя
Поломалась многородовость с новым АПИ. Теперь не получится пользователю на лету добавлять группу с ценой в этом городе.
Вместо CCatalogProductProvider теперь Bitrix\Catalog\Product\CatalogProvider
Новый ПродуктПровайдерКласс не понимает групп пользователя, которые установлены «на лету» методом $USER->GetUserGroupArray();. Приходится заменять новый на старый.
| Т.е. речь либо о разделении типов цен по сайтам, либо о выборе типа цены в зависимости от местоположения? |
Да, можно с местоположением связать. Но обычно регионы продаж делаем на инфоблоке или хайлоадблоке.
Стандартное решение с многогородовостью: делаем инфоблок со списком городов. Рисуем в шапке выбиралку городов. В зависимости от выбранного пользователем города делаем $USER->GetUserGroupArray(); с нужной группой — пользователь получает цену в своём регионе.
Еще обычно устанавливаем местоположение в корзине и показываем нужные склады.
Еще было бы хорошо сделать событие, чтобы явно в зависимости от каких-то условий выбирать доступные пользователю типы цен.
Событие OnGetOptimalPrice сложное. Надо весь результат возвращать.
| Еще было бы хорошо сделать событие, чтобы явно в зависимости от каких-то условий выбирать доступные пользователю типы цен. |
Событие OnGetOptimalPrice сложное. Надо весь результат возвращать.
Бывают задачи например: если общая сумма товаров в корзине по розничной цене больше 10000, то дать доступ к цене «Мелкий Опт».
А могут быть товары исключения, для которых «Мелкий Опт» нельзя, т.к. розничная цена установлена производителем.
Бывает, что при вычислении цены товара надо знать от какого типа сейчас надо считать цену этого товара по специальным условиям (не только от выбранного региона)
Или товары легковые шины считать по одному типу цен, а диски по другому типу цен. Хотя могут быть оба типа заполнены. Просто у заказчика разными категориями товаров разные подразделения занимаются и свои цены придумывают.
Я подумал, что интересно было бы ещё иметь возможность гибко назначать пользователю его типы цен, к которым он имеет доступ, с помощью события.
Источник
ReserveProduct
Класс CCatalogProductProvider устарел с версии 17.5.0 модуля catalog. Используйте \Bitrix\Catalog\Product\CatalogProvider .
Метод осуществляет резервирование или отмену резервирования товара. Метод статический.
Параметры вызова
| Параметр | Описание |
|---|---|
| arParams | Ассоциативный массив параметров с ключами:
|
Возвращаемое значение
Метод возвращает ассоциативный массив с ключами:
- RESULT — успешно (true) или неуспешно (false) завершилась операция;
- QUANTITY_RESERVED — зарезервированное количество.
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.
Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
Источник
OrderProduct
Описание и параметры
Класс CCatalogProductProvider устарел с версии 17.5.0 модуля catalog. Используйте \Bitrix\Catalog\Product\CatalogProvider .
Метод метод возвращает информацию о товаре из каталоге, вызывается после создания заказа. В отличие от GetProductData по-другому обрабатывает информацию о купонах. Метод статический.
Параметры вызова
| Параметр | Описание |
|---|---|
| arParams | Ассоциативный массив параметров товара, ключами в котором являются названия параметров, а значениями — соответствующие значения:
|
Возвращаемое значение
Метод возвращает ассоциативный массив параметров товара с ключами:
- NAME — название товара;
- CAN_BUY — (Y|N) флаг возможности купить товар;
- DETAIL_PAGE_URL — ссылка на страницу с информацией о товаре;
- BARCODE_MULTI — Y|N) определяет каждый ли экземпляр товара имеет собственный штрихкод;
- WEIGHT — вес товара;
- DIMENSIONS — размеры товара (ширина, высота и длина);
- TYPE — код, обозначающий принадлежность товара к комплектам. Может быть пустым;;
- QUANTITY — количество товара;
- PRICE — цена;
- PRODUCT_PRICE_ID — идентификатор цены товара;
- CURRENCY — валюта, в которой задана цена;
- DISCOUNT_PRICE — величина скидки;
- NOTES — особые заметки, например, тип цены;
- VAT_RATE — величина налога на товар.
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.
Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
Источник