Или я заработался или лыжи не едут...
Пытаюсь:
получить скидку на товар чтобы расчитать цену.
ID правильное, $arPrice['ID'] тоже - результат пустой массив.
Смотрю компонент штатный (он кстати выдает скидку правильно) и вижу что там используется CIBlockPriceTools::GetItemPrices - пробуй реализовать с ним - облом.
Смотрю как он рабтает. Вижу что он использует CCatalogDiscount::GetDiscount - использую его - облом.
Тупо копирую параметры с которыми CCatalogDiscount::GetDiscount вызывается в компоненте - все равно пустой массив. На всякий случай заменяю прямо в тексте класса модуля вызов на те же самые параметры - в выхлопе действующая скидка.
Пробую на странице сайта - работает!
Тут соображаю что не работает в функции обработчика события OnIBlockElementAdd (да и других событий).
И что выходит? Статический класс не детерминированный и результат зависит от состояния системы?
Или я где-то загоняюсь?
Пытаюсь:
Код |
---|
$arDiscounts = CCatalogDiscount::GetDiscountByProduct( $ID, array(2), 'N', array($arPrice['ID']), SITE_ID ); |
ID правильное, $arPrice['ID'] тоже - результат пустой массив.
Смотрю компонент штатный (он кстати выдает скидку правильно) и вижу что там используется CIBlockPriceTools::GetItemPrices - пробуй реализовать с ним - облом.
Смотрю как он рабтает. Вижу что он использует CCatalogDiscount::GetDiscount - использую его - облом.
Тупо копирую параметры с которыми CCatalogDiscount::GetDiscount вызывается в компоненте - все равно пустой массив. На всякий случай заменяю прямо в тексте класса модуля вызов на те же самые параметры - в выхлопе действующая скидка.
Пробую на странице сайта - работает!
Тут соображаю что не работает в функции обработчика события OnIBlockElementAdd (да и других событий).
И что выходит? Статический класс не детерминированный и результат зависит от состояния системы?
Или я где-то загоняюсь?