Как программно добавить купон на корзину

Как же программно добавить купон на всю корзину?

Вот информация из просторов сети.

Скидка правила работы с корзиной добавляется методом:

	 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();
Количество показов: 16667
13.04.2015

Возврат к списку

Если вам была полезна статья можете отблагодарить автора:
Ethereum:

0x16Df809287333C49D3A237296C6248A6c08702Bc

Разработка сайта

Подайте заявку на разработку сайта на базе готового решения от компании 1С-Битрикс или одного из партнеров компании. Максимально подробно опишите, чему будет посвящен сайт, если это интернет-магазин - что он будет продавать, нужна ли мультиязычность, будут ли разные типы цен (розница, опт, крупный опт), будет ли интеграция с 1С, будет ли выгрузка товаров на различные торговые площадки...

Сопровождение сайта

Вы можете подать заявку на сопровождение вашего сайта на базе 1С-Битрикс. Сопровождение включает в себя: проверка актуальности обновлений сайта, проверка актуальности резервной копии, консультации по сайту. Опишите в заявке, какие еще объемы планируются на сопровождении и на какой срок вы планируете заключить договор на сопровождение - мы подберем подходящий вам бюджет на сопровождение

Работы по сайту

Вы можете подать заявку на выполнение определенного объема работ по сайту. Опишите в заявке объем работ. Это может быть разработка какого-то нового функционала, доработки по имеющемуся функционалу, доработки под требования сео-специалистов. На основании заявки вам будет сформирован бюджет работ, а также названы сроки на выполнение тех или иных работ.