О web-разработке
и даже немного больше...

Смена статуса заказа в Bitrix

Как и во многих интернет-магазинах в системе битрикс заказы могут принимать определённые статусы. Статус заказа в магазине определяет этап, на котором находится процесс обработки заказа. Таким образом, позволяет информировать клиентов о текущем состоянии выполнения заказа, а также могут выполняться другие операции. Для сотрудников интернет-магазина это так же служит информированием о том, на каком этапе заказ находится, облегчая им процесс обработки.

Настраиваются статусы заказов в администраторской части сайта, в разделе «Статусы»:
Магазин > Настройки магазина > Статусы

Смена статуса в Bitrix в старых версиях (до 15.x)

Логика обработки заказов может отличаться для разных интернет-магазинов. В некоторых случаях может возникнуть необходимость смены статусов через код. Например, после оформления заказа, следует переводить его в другой статус. Для этого существует метод StatusOrder, через который можно выставить у указанного заказа нужный статус.

if (CSaleOrder::StatusOrder($ORDER_ID, "F")){
	echo "Статус заказа изменён успешно!";
} else {
	echo "Не удалось изменить статус заказа!";
}

В качестве параметров методу передаются два значения. Первый аргумент $ORDER_ID – ID заказа, второй – символьный код статуса.

Перед тем как статус изменяется происходит вызов обработчика OnSaleBeforeOrder модуля интернет магазина, в котором так же можно выполнять различные манипуляции с данными. После смены статуса вызывается обработчик OnSaleStatusOrder модуля интернет-магазина. При смене статуса заказа так же генерируется почтовое событие, которое представляется в виде SALE_STATUS_CHANGED_<код статуса>, и отправляется письмо, если существует почтовый шаблон. В ином случае, срабатывает почтовое событие общее для всех статусов SALE_STATUS_CHANGED. Используя эти почтовые события можно отправлять письма с уведомлениями клиенту, а также операторам интернет-магазина.

Стоит отметить что метод StatusOrder стал доступен в битриксе начиная с версии 3.3.0 однако начиная с версии 15.0.0 класс CSaleOrder в котором находится метод обозначен разработчиками как устаревший. Альтернативный класс, который может быть использован в свежих версиях битрикс с ядром D7 — \Bitrix\Sale\Order.

Смена статуса заказа в Bitrix D7

Новая версия ядра магазина Bitrix D7 основательно стала использоваться с версии 16.x. Таким образом версия 15.5 стала переходной версией, в которой так же могут работать новые классы для работы с интернет-магазином, которые были собраны в модуле sale. Для работы с методами класса воспользуемся пространством имен модуля интернет-магазина:

use Bitrix\Sale;

В этой концепции заказ представляет из себя объект класса Bitrix\Sale\Order. Особенность использования класса в том, что для сохранения изменений необходимо вызывать метод save(). После этого все изменения в заказе будут сохранены в базе данных.

Простой пример смены статуса заказа:

// получаем объект существующего заказа
$order = Sale\Order::load($ORDER_ID);

// задаем значение для поля STATUS_ID - N (статус: принят)
$order->setField('STATUS_ID', 'N');

// сохраняем изменения
$order->save();

После создания экземпляра класса, используя метод setFields() можно менять значения различных полей заказа. В данном примере мы задает значение поля STATUS_ID. После чего вызываем метод save() который и сохраняет наши изменения в базе данных. Метод setFields() универсальный, через него можно менять такие параметры как вес (ORDER_WEIGHT), сумму заказа (PRICE), а так же другие поля которые вы можете посмотреть вызвав метод: $order->getAvailableFields(). Таким образом можно манипулировать множеством данных заказа через один экземпляр класса. Существуют и множество других интересных методов класса для работы с заказом, но о них поговорим чуть позже.
На этом пока всё, всем всего доброго!

Опубликован: 25.10.2019 г.

См. также:

«Не удалось установить соединение с сервером. Проверьте …».
Получение Email-адреса покупателя в заказе (Bitrix D7)
Работа с URL-адресами в Bitrix D7
Работа с купонами в Bitrix API
Добавляем пункт меню для списков в админке Битрикс
Диалоговые окна в Bitrix API
Создание инфоблока при установке модуля
Создание копии корзины из заказа на Bitrix D7

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Комментарии
  • Загрузка...
Друзья сайта