\Bitrix\Main\Loader::includeModule('sale');
$DISCOUNT_VALUE = 40;//процент скидки
$arItemIds = [1, 2, 3];//Массив с ID элементов товаров
$arDiscountFields = [
"LID" => SITE_ID,
"SITE_ID" => SITE_ID,
"NAME"=> "Скидка ".$DISCOUNT_VALUE."%",
"DISCOUNT_VALUE" => $DISCOUNT_VALUE,
"DISCOUNT_TYPE" => "P",
"LAST_LEVEL_DISCOUNT" => "Y",
"LAST_DISCOUNT" => "Y",
"ACTIVE" => "Y",
"CURRENCY" => "EUR",
"USER_GROUPS" => [2],
'ACTIONS' => [
"CLASS_ID" => "CondGroup",
"DATA" => [
"All" => "AND"
],
"CHILDREN" => [
[
"CLASS_ID" => "ActSaleBsktGrp",
"DATA" => [
"Type" => "Discount",
"Value" => $DISCOUNT_VALUE,
"Unit" => "Perc",
"Max" => 0,
"All" => "OR",
"True" => "True",
],
"CHILDREN" => [
[
"CLASS_ID" => "ActSaleSubGrp",
"DATA" => [
"All" => "AND",
"True" => "True",
],
"CHILDREN" => [
[
"CLASS_ID" => "CondIBElement",
"DATA" => [
"logic" => "Equal",
"value" => $arItemIds,
]
]
]
]
]
]
]
],
"CONDITIONS" => [
'CLASS_ID' => 'CondGroup',
'DATA' => [
'All' => 'AND',
'True' => 'True',
],
'CHILDREN' => [
[
"CLASS_ID" => "CondBsktProductGroup",
"DATA" => [
"Found" => "Found",
"All" => "OR",
],
"CHILDREN" => [
[
"CLASS_ID" => "CondIBElement",
"DATA" => [
"logic" => "Equal",
"value" => $arItemIds,
]
]
]
],
],
]
];
$iDiscountNumber = \CSaleDiscount::Add($arDiscountFields);
if(IntVal($iDiscountNumber) > 0)
\Bitrix\Sale\Internals\DiscountGroupTable::updateByDiscount($DISCOUNT_ID, [2], "Y", true);//Обновить параметры для группы пользователей с ID = 2, только тогда скидка появляется в списке скидок в админке
|