Правило для работы в корзине не подходит, т.к. данные переменчивы (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 класса не вызывается...