Пометка главным образом для себя, что бы снова не искать как это сделать. В одном из проектов мне понадобилось сделать кастомную проверку условий скидки на товар. Для этой проверки используются защищенные (protected) и недокументированные методы класса CAllCatalogDiscount. Поэтому класс CAllCatalogDiscount нужно расширить. В простейшем виде это выглядит вот так. Этот код выполняет проверки в условиях для скидки на товар.
class CMyCatalogDiscount extends \CAllCatalogDiscount
{
/** * Метод проверяет что для данного продукта выполняются все условия
* @param int $productID - идентификатор продукта
* @param array $arDiscount - мссив с информацией о скидке, который возвращается методом CCatalogDiscount::GetList
* @return bool
* @internal param string $unpack - строка UNPACK которая получается при вызове CCatalogDiscount::GetList
*/
public static function check($productID, $arDiscount)
{
if (!isset($arDiscount['UNPACK'])) {
return false;
}
$arProduct = array('ID' => $productID, 'IBLOCK_ID' => PRODUCT_IBLOCK_ID);
self::__GenerateFields($arProduct); // Заполняет информацию о продукте
return self::__Unpack($arProduct, $arDiscount['UNPACK']); // Выполняет сами проверки
}
} |