В интернет-магазинах часто проводятся акции с купонами, и со временем возникает вопрос: сколько раз был использован конкретный промокод? В этой статье разберем два способа проверки количества применений купона в Битрикс.
1. Способ через CSaleOrder::GetList
Этот метод прост и эффективен: он подсчитывает заказы, в которых был применен указанный купон.
if ($_REQUEST['code']) {
if (CModule::IncludeModule("sale")) {
$code = trim($_REQUEST['code']);
$arFilter = ["BASKET_DISCOUNT_COUPON" => $code];
$cntCode = CSaleOrder::GetList([], $arFilter, []);
$arResult['CNT'] = $cntCode;
}
}Как это работает?
-
Метод
GetListвозвращает количество заказов, где был использован купон. -
Третий параметр (
[]) указывает на подсчет записей без выборки данных.
2. Способ через DiscountCouponTable (более детальный)
Этот вариант дает больше информации о купоне, включая его активность, лимиты и другие параметры.
use \Bitrix\Main;
use \Bitrix\Sale\Internals;
if ($_REQUEST['code']) {
try {
if (!Main\Loader::IncludeModule('sale')) {
throw new \Exception("Модуль 'sale' не установлен");
}
$arCoupon = Internals\DiscountCouponTable::getRow([
'filter' => ['COUPON' => $code]
]);
if ($arCoupon) {
$arResult['CNT'] = $arCoupon['USE_COUNT']; // Количество использований
// Доп. данные: $arCoupon['DISCOUNT_ID'], $arCoupon['ACTIVE'] и т. д.
} else {
throw new \Exception("Купон [{$code}] не найден");
}
} catch(\Exception $e) {
echo $e->getMessage();
}
}Преимущества второго способа:
-
Возможность получить дополнительные данные о купоне (активность, лимиты, даты).
-
Более гибкая работа с объектной моделью Битрикс.
Какой способ выбрать?
-
Если нужно просто количество использований → первый способ.
-
Если требуется детальная информация о купоне → второй способ.
Теперь вы знаете, как проверить статистику применения промокодов в Битрикс. Это поможет анализировать эффективность маркетинговых акций и управлять скидками.