Делаю следующее:
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
use Bitrix\Sale\Internals;
CModule::IncludeModule("catalog");
CModule::IncludeModule("iblock");
CModule::IncludeModule("sale");
global $APPLICATION;
// Первым делом, создадим правило со скидкой для купона
// размер скридки в %
$discountValue = 10;
$arActions["CLASS_ID"] = "CondGroup";
$arActions["DATA"]["All"] = "AND";
$arActions["CLASS_ID"] = "CondGroup";
$arActions["CHILDREN"][0]["CLASS_ID"] = "ActSaleBsktGrp";
$arActions["CHILDREN"][0]["DATA"]["Type"] = "Discount";
$arActions["CHILDREN"][0]["DATA"]["Value"] = $discountValue;
$arActions["CHILDREN"][0]["DATA"]["Unit"] = "Perc";
$arActions["CHILDREN"][0]["DATA"]["All"] = "OR";
// получаем список товаров из определённых разделов, по SECTION_ID
$DbParentEl = CIBlockElement::GetList(
array(),
array(
"IBLOCK_ID" => array(17),
"SECTION_ID" => array(787)
),
false,
false,
array("ID")
);
$i=0;
while($arElem = $DbParentEl->Fetch()){
// формируем массив для создания скидок на товары
$arActions["CHILDREN"][0]["CHILDREN"][$i]["CLASS_ID"] = "CondIBElement";
$arActions["CHILDREN"][0]["CHILDREN"][$i]["DATA"]["logic"] = "Equal";
$arActions["CHILDREN"][0]["CHILDREN"][$i]["DATA"]["value"] = $arElem["ID"];
$i++;
}
$arConditions["CLASS_ID"] = "CondGroup";
$arConditions["DATA"]["All"] = "AND";
$arConditions["DATA"]["True"] = "True";
$arConditions["CHILDREN"] = "";
// начало активности скидки
$unixStart = strtotime(date("d.m.Y H:i:s"));
// окончание активности скидки
$unixEnd = $unixStart + 43200; // интервал 12 часов
// Формируем массив для добавления правила
$arFields = array(
"LID" => "s1",
"NAME" => $discountValue."% Скидки ".date("d.m.y"), // название скидки
"CURRENCY" => "RUB", // валюта
"ACTIVE" => "Y", // активность
"USER_GROUPS" => array(1), // группа пользователей
"ACTIVE_FROM" => ConvertTimeStamp($unixStart, "FULL"),
"ACTIVE_TO" => ConvertTimeStamp($unixEnd, "FULL"),
"CONDITIONS" => $arConditions,
'ACTIONS' => $arActions
);
// добавление нового правило скидок
$discountID = CSaleDiscount::Add($arFields);
if ($discountID > 0) {
// генерируем новый код купона
$codeCoupon = CatalogGenerateCoupon();
$couponFields = array(
"DISCOUNT_ID" => $discountID, // ID правила скидок
"COUPON" => $codeCoupon,
"ACTIVE" => "Y",
"TYPE" => 2,
"MAX_USE" => 0
);
// добавляем новый купон
$addCouponRes = Internals\DiscountCouponTable::add($couponFields);
if (!$addCouponRes->isSuccess()){
$err = $addCouponRes->getErrorMessages();
print_r($err);
} else {
echo 'Новый купон успешно создан! Номер купона: '.$codeCoupon;
}
} else {
$ex = $APPLICATION->GetException();
echo 'Ошибка при создании нового правила скидок: '.$ex->GetString();
}
В результате получаю на странице ошибку:
Ошибка при создании нового правила скидок: Действия, заданные для правила, некорректны. Правило не может быть сохранено.
Что делаю не так?