Николаев Виталий
Блог веб-разработчика: Битрикс, PHP, Python, Linux и SEO
Битрикс Битрикс
23.01.2023

Битрикс. Список всех заказов, при оформлении которых был использован тот или иной купон получения скидки

В 1С-Битрикс иногда требуется получить список заказов, в которых использовался определенный купон скидки.

Это может понадобиться:

  • для аналитики;
  • проверки маркетинговых акций;
  • поиска злоупотреблений купонами;
  • CRM-интеграций;
  • отчетов по скидкам.

Получение заказов по купону

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

   $arFilter = Array(
      "BASKET_DISCOUNT_COUPON" => "КОД_КУПОНА_ЗДЕСЬ",
   );

   $rsSales = CSaleOrder::GetList(
      array("DATE_INSERT" => "ASC"),
      $arFilter
   );

   while ($arSales = $rsSales->Fetch())
   {
      echo "<pre>";
      print_r($arSales);
      echo "</pre>";
   }

endif;
?>

Что делает этот код

Код:

  • подключает модуль sale;
  • фильтрует заказы по купону;
  • получает список заказов;
  • выводит найденные данные.

Фильтр BASKET_DISCOUNT_COUPON

Основной фильтр:

"BASKET_DISCOUNT_COUPON"

позволяет искать заказы, в которых использовался конкретный купон.

Пример фильтра

$arFilter = Array(
    "BASKET_DISCOUNT_COUPON" => "SALE10"
);

Сортировка заказов

В примере используется сортировка:

array("DATE_INSERT" => "ASC")

то есть:

  • от старых заказов к новым.

Вывод результата

Метод:

$rsSales->Fetch()

возвращает:

  • ID заказа;
  • дату;
  • сумму;
  • статусы;
  • данные пользователя;
  • другие поля заказа.

Поиск по нескольким купонам

Можно искать сразу по нескольким купонам:

CSaleOrder::GetList(
    array(),
    array(
        'BASKET_DISCOUNT_COUPON' => array(
            'TEST1',
            'TEST2'
        )
    )
);

Когда это удобно

  • массовые акции;
  • email-рассылки;
  • проверка промокодов;
  • отчеты маркетинга;
  • партнерские программы;
  • контроль скидок.

Пример вывода только ID заказов

<?
while ($arSales = $rsSales->Fetch())
{
    echo $arSales["ID"] . "<br>";
}
?>

Проверка найденных заказов

Можно проверить:

<?
if ($rsSales->SelectedRowsCount() > 0)
{
    echo "Заказы найдены";
}
?>

Важно про старый API

Код использует:

CSaleOrder::GetList()

— это старый API Битрикс.

В новых проектах рекомендуется использовать:

\Bitrix\Sale\Order

и ORM D7.

Где размещать такой код

  • административные скрипты;
  • отчеты;
  • cron;
  • интеграции;
  • служебные страницы.

Итог

Чтобы получить заказы по купону скидки в 1С-Битрикс, можно использовать фильтр:

"BASKET_DISCOUNT_COUPON"

вместе с:

CSaleOrder::GetList()

Такой способ позволяет быстро найти все заказы, в которых использовался нужный промокод.

21 просмотров

Комментарии

Где заказы?
Почему у одних компаний очередь из клиентов, а у других пустой сайт и тишина?
Телеграм канал «Где заказы?» — про продажи, сайты и ошибки бизнеса на реальных примерах. Подписаться