Битрикс – как узнать сколько раз использовался купон

Рано или поздно, в большом интернет-магазине возникает вопрос – а сколько раз использовали тот или иной купон? Акций ведь было много. Ниже в статье вы узнаете пару способов.

Битрикс – Сколько раз использовался промокод в заказе

В данный момент за систему скидок отвечает Правила работы с корзиной. Создаем простую форму, с input name=”code”, и кнопку по которой можно будет отправлять результат на ту же страницу.

А теперь что получится в коде:

use \Bitrix\Main,
	\Bitrix\Sale\Internals;

if ($_REQUEST['code']) {

	if (CModule::IncludeModule("sale")):

		$code = trim($_REQUEST['code']);

		// Способ 1
		$arFilter 	= Array(
			"BASKET_DISCOUNT_COUPON" => $code,
		);
		$cntCode 	= CSaleOrder::GetList(array("DATE_INSERT" => "ASC"), $arFilter, []);

		$arResult['CNT'] = $cntCode;

		// Способ 2
		try {

			if (!Main\Loader::IncludeModule('sale')) {
				throw new \Exception("Module 'sale' not installed");
			}

			$arCoupon = Internals\DiscountCouponTable::getRow([
				'filter' => [
					'COUPON' => $code
				]
			]);

			if (!empty($arCoupon)){
				//print_r($arCoupon);
			} else {
				throw new \Exception("Coupon [CODE:{$code}] not found");
			}
		}
		catch(\Exception $e) {
			var_dump($e->getMessage() );
		}
	endif;

}

Способ 1. Довольно простой и использует стандартную фишку метода GetList – если передать пустой массив 3-им (а иногда 4ым параметром), то вернется просто число записей. Таким образом, вы узнаете сколько раз применялся данный купон. Напомню, из формы $_REQUEST[‘code’] – что и будет нашим промокодом.

Способ 2. Взят из просторов интернета, и имеет уже структуру посложнее для понимания. Опускаемся вниз к строке print_r($arCoupon);
Тут в массиве будет параметр USE_COUNT. То есть, чтобы узнать количество использований данного купона, нам нужно добавить:

$arResult['CNT'] = $arCoupon['USE_COUNT'];

Чем хорош способ 2, так это тем что в нем мы можем найти кучу дополнительных параметров. Например DISCOUNT_ID и SITE_ID – ID скидки и ID сайта соответственно.

автор: Dmitriy

З 2011 року займаюся веб-розробкою. Зараз я – PHP Full Stack Developer.
Обговорити ваш проект, а також дізнатися більше про мене ви можете на цьому сайті:
dev.forwww.com

Email: dmitriyribka@gmail.com

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *