Как же программно добавить купон на всю корзину?
Вот информация из просторов сети.
Скидка правила работы с корзиной добавляется методом:
CSaleDiscount::Add($arFields)
Купон правила работы с корзиной добавляется методом
Internals\DiscountCouponTable::add($fields);
Для данных методов нужно подключать модуль sale.
Описание функции CSaleDiscount::Add доступно по
ссылке .
Для метода Internals\DiscountCouponTable::add($fields); не предусмотрено описания, это не документированная функция. Её применение можно посмотреть в кода ядра в файле \bitrix\modules\sale\admin\discount_coupon_edit.php, а также в файле \bitrix\modules\sale\admin\discount_edit.php, где создается скидка-правило работы с корзиной.
Update 2017-06-21
Ниже пример кода, генерирующего купон для определенной скидки с установкой активности купона в 2 дня (привожу как есть, по коду много комментариев, думаю, все прозрачно и понятно)
require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php'); class PaiCouponGeneration{ var $DISCOUNT_ID = 9; // идентификатор скидки var $PERIOD = '2 days'; // период активности купона если нужен будет 1 день - заменить на '1 day', // в остальных случаях - просто замена цифры function __construct() { \Bitrix\Main\Loader::includeModule('sale'); } function GetDiscountID(){ if(intval($this->DISCOUNT_ID)<=0){ $arDiscountFilter = array('ACTIVE'=>'Y','ID'=>$this->DISCOUNT_ID); // сюда можно прописать любые параметры фильтрации для поиска конктетной скидки по параметрам // если же нужно просто привязаться к какой-то конкретной скидке - прописываем ее идентификатор // в переменную $DISCOUNT_ID $saleDiscountDb = \CSaleDiscount::GetList(array('DATE_CREATE' => 'DESC'),$arDiscountFilter, false,false,array('ID','ACTIONS','CONDITIONS')); $saleDiscountId = null; if ($saleDiscount = $saleDiscountDb->Fetch()) { $saleDiscountId = $saleDiscount['ID']; } $this->DISCOUNT_ID = $saleDiscountId; } } function GenerateCoupon(){ $this->GetDiscountID(); if(intval($this->DISCOUNT_ID)>0){ $activeFrom = new \Bitrix\Main\Type\DateTime(); $activeTo = new \Bitrix\Main\Type\DateTime(); $activeTo = $activeTo->add($this->PERIOD); $coupon = \Bitrix\Sale\Internals\DiscountCouponTable::generateCoupon(true); $addDb = \Bitrix\Sale\Internals\DiscountCouponTable::add(array( 'DISCOUNT_ID' => $this->DISCOUNT_ID, 'COUPON' => $coupon, 'TYPE' => \Bitrix\Sale\Internals\DiscountCouponTable::TYPE_ONE_ORDER, 'ACTIVE_FROM' => $activeFrom, 'ACTIVE_TO' => $activeTo, 'MAX_USE' => 1, 'USER_ID' => 0, 'DESCRIPTION' => '' )); if ($addDb->isSuccess()) { echo $coupon; } else { echo $addDb->getErrorMessages(); } } else { echo 'Ошибка генерации купона скидки. Обратитесь к администратору сайта'; } } } $coupon = new PaiCouponGeneration(); $coupon->GenerateCoupon();
Благодарю за внимание! Делитесь вашими замечаниями в комментариях ниже.
P.S. Обращайтесь ко мне за приобретением лицензий и продлений на 1C-Битрикс "Управление сайтом", лицензий на облачную и коробочную версии Битрикс 24 а также за приобретением и внедрением готовых решений на базе 1С-Битрикс от партнеров. За более подробной информацией свяжитесь со мной любым удобным для вас способом