Всем привет.
Полазив по форуму и по гуглу, собрал все что мог для ядра д7
Код работает, но только на добавление и изменение товара\раздела - добавляет галочку к свойству товара.
Помогите допилить на удаление скидки, или из условий скидки товара\раздела, чтобы убиралось из свойства галочка
Полазив по форуму и по гуглу, собрал все что мог для ядра д7
Код работает, но только на добавление и изменение товара\раздела - добавляет галочку к свойству товара.
Помогите допилить на удаление скидки, или из условий скидки товара\раздела, чтобы убиралось из свойства галочка
| Код |
|---|
$eventManager = Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler('sale', 'DiscountonAfterAdd', 'updateDiscountProps');
$eventManager->addEventHandler('sale', 'DiscountonAfterUpdate', 'updateDiscountProps');
// $eventManager->addEventHandler('sale', 'DiscountonAfterDelete', 'updateDiscountProps');
function updateDiscountProps() {
if (CModule::IncludeModule('sale')){
$result = Bitrix\Sale\Internals\DiscountTable::getList(array('filter' => array('LID' => 's1', 'ACTIVE' => 'Y')));
while ($data = $result->fetch()) {
if ($data['SHORT_DESCRIPTION_STRUCTURE']['VALUE'] > 0 ) { // размер скидки в списке маркетинговых акций
foreach ($data['CONDITIONS_LIST']['CHILDREN'] as $arData) {
foreach ($arData [ 'CHILDREN' ] as $arElements ){ // получаем ID секций и элементов
switch ($arElements [ 'CLASS_ID' ]) {
case 'CondIBSection':
$sectionsvalue[] = $arElements['DATA']['value'];
break;
case 'CondIBElement':
foreach ($arElements['DATA']['value'] as $arElementsList) {
$elementsvalue[] = $arElementsList;
}
break;
}
}
}
}
}
function GetElementID($ibID, $sectID) {
if (CModule::IncludeModule('iblock')) {
$arFilter = array(
'IBLOCK_ID' =>IntVal($ibID),
'SECTION_ID' => $sectID ,
'INCLUDE_SUBSECTIONS'=>'Y',
'ACTIVE' => 'Y'
);
$res = CIBlockElement::GetList(array('RAND' => 'RAND'), $arFilter, false, false, array('ID'));
while ($ob = $res->GetNextElement()) {
$arFields[] = $ob->GetFields();
}
foreach ($arFields as $ids) {
$result[] = $ids['ID'];
}
return $result;
}
}
$CATALOG_ID = 2;
if (empty($elementsvalue)) {
$elementsvalue = array();
}
if (!empty($sectionsvalue)) {
$FilterResult = GetElementID($CATALOG_ID, $sectionsvalue); // указываем ID инфоблока и передаем ID секций для выборки ID элементов
}else{
$FilterResult = array();
}
$arFilterResult = array_unique(array_merge($elementsvalue, $FilterResult)); // объединяем массивы и удаляем одинаковые ID, если они есть
foreach ($arFilterResult as $discountID) {
CIBlockElement::SetPropertyValuesEx(
$discountID,
$CATALOG_ID,
array(
'DISCOUNT' => 18 //Символьный код свойства список и его ID значение
)
);
};
}
}
|