Bitrix catalog product catalogprovider не работает

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 Ассоциативный массив параметров с ключами:
  • PRODUCT_ID — идентификатор товара;
  • QUANTITY_ADD — резервируемое количество;
  • UNDO_RESERVATION — (Y|N) флаг определяет выполнять резервирование или снимать товар с резервов.

Возвращаемое значение

Метод возвращает ассоциативный массив с ключами:

  • RESULT — успешно (true) или неуспешно (false) завершилась операция;
  • QUANTITY_RESERVED — зарезервированное количество.

Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.

Источник

OrderProduct

Описание и параметры

Класс CCatalogProductProvider устарел с версии 17.5.0 модуля catalog. Используйте \Bitrix\Catalog\Product\CatalogProvider .

Метод метод возвращает информацию о товаре из каталоге, вызывается после создания заказа. В отличие от GetProductData по-другому обрабатывает информацию о купонах. Метод статический.

Параметры вызова

Параметр Описание
arParams Ассоциативный массив параметров товара, ключами в котором являются названия параметров, а значениями — соответствующие значения:
  • PRODUCT_ID — идентификатор товара;
  • QUANTITY — количество товара;
  • USER_ID — идентификатор пользователя;
  • SITE_ID — код сайта;
  • CHECK_QUANTITY — (Y|N) флаг выполнения проверки доступности для покупки указанного количества товара;
  • RENEWAL — (Y|N) флаг продления подписки на товар.

Возвращаемое значение

Метод возвращает ассоциативный массив параметров товара с ключами:

  • 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 — величина налога на товар.

Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.

Источник

Читайте также:  Mafia definitive edition не работает звук
Оцените статью