@devjob

CatalogProvider метод getProductData не вызывается. Почему?

Правило для работы в корзине не подходит, т.к. данные переменчивы (ID товара).
Нужно ,чтобы при добавлении товара на позицию была скидка, в зависимости от определенных условий.
Как правильно реализовать функционал скидок?

Попробовал через CATALOG_PROVIDER_CLASS, однако данный метод не срабатывает.
Привожу код ниже:
namespace My;

use \Bitrix\Main\Diag\Debug;
class MyCatalogProvider extends \Bitrix\Catalog\Product\CatalogProvider
{
    public function getProductData(array $arParams)
    {
        self::log($arParams, 'logs/_catalogpriceprovider.log');
    }

    public static function log($var, $path = 'logs/dump.log', $varName='')
    {
        Debug::dumpToFile($var, $varName, $path);
    }
}


Добавляю позицию:
// .... 
$arFields = [
            'PRODUCT_ID' => (int)$id,
            'QUANTITY' => (int)$quantity,
//            'PRICE' => $arPriceOptimal['RESULT_PRICE']['BASE_PRICE'] - $arPriceOptimal['RESULT_PRICE']['DISCOUNT_PRICE'],
//            'CURRENCY' => $arPriceOptimal['RESULT_PRICE']['CURRENCY'],
            'CATALOG_PROVIDER_CLASS' => '\\My\\MyCatalogProvider'
        ];

$rs = \Bitrix\Catalog\Product\Basket::addProductToBasket(self::getBasketForCurrentFUser(), $arFields, ['SITE_ID' => 's3']);


Но метод getProductData класса не вызывается...
  • Вопрос задан
  • 1099 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы