Николаев Виталий
Блог веб-разработчика: Битрикс, 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;
  • фильтрует заказы по купону;
  • получает список заказов;
  • выводит найденные данные.

В своих проектах я использую серверную инфраструктуру Timeweb Cloud

VPS и облачные решения для стабильной работы сайтов на PHP и 1С-Битрикс — от корпоративных сайтов до интернет-магазинов и высоконагруженных веб-проектов.

Перейти на Timeweb Cloud
Реклама · ERID: CQH36pWzJqVJ4YD9t5y227AkMQdhpG2THarwRmX2g9tS8x

Фильтр 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()

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

108 просмотров

Если возникли сложности

Помогу разобраться с настройкой, исправить ошибки и реализовать решение под ваш проект.

Поддержка сайтов на 1С-Битрикс

Поддержка сайтов на 1С-Битрикс: быстрое решение ошибок, консультации, обучение сотрудников и сопровождение сайта. 
Резервирую время под ваш проект для оперативной помощи и стабильной работы сайта.
Подробнее
Где заказы?

Почему один сайт стабильно приносит заявки, а другой годами просто «висит в интернете»?

В телеграм-канале «Где заказы?» я разбираю реальные ошибки бизнеса, SEO, сайты, рекламу, воронки продаж и показываю, почему компании теряют клиентов и как это исправить.

Без инфоцыганства и мотивационных цитат — только практика, кейсы и рабочие решения для бизнеса и веб-разработки.

Комментарии

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