Рано или поздно, в большом интернет-магазине возникает вопрос – а сколько раз использовали тот или иной купон? Акций ведь было много. Ниже в статье вы узнаете пару способов.
Битрикс – Сколько раз использовался промокод в заказе
В данный момент за систему скидок отвечает Правила работы с корзиной. Создаем простую форму, с 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 сайта соответственно.