Bitrix sale order getlist

Начиная с 16 версии используется новая версия ядра магазина Битрикс, являющаяся частью ядра Битрикс D7. Многое описанное здесь может работать и в переходной версии 15.5. Все классы для работы с магазином собраны в модуле sale, поэтому для работы примером используем use для пространства модуля интернет-магазина.

Заказ (SaleOrder)

Заказ представляет собой объект класса BitrixSaleOrder. Нужно запомнить, что пока не вызван метод save() этот объект необязательно связан с сохранённым заказом. Также пока вы не вызовете save(), изменения в заказе не будут сохранены в базе данных.

Существующий заказ можно получить следующим образом:

Поля заказа можно получить короткими вызовами:

Также любое поле по имени можно получить так:

Список доступных полей можно получить, вызвав $order->getAvailableFields().

Заказ имеет связь один-ко-многим с несколькими объектами в виде коллекций — коллекция товаров в корзине (SaleBasket), коллекция отгрузок (SaleShipmentCollection), коллекция оплат (SalePaymentCollection) и коллекция свойств заказа (SalePropertyValueCollection).

Самый простой способ получить список способов доставки и оплаты — короткие вызовы:

Чтобы получить список примененных к заказу скидок, нужно вызвать:

В массиве $discountData[‘DISCOUNT_LIST’] содержится список скидок, в $discountData[‘COUPON_LIST’] содержится список купонов. Т.к. скидки можно отключать в админке, следует проверять поле APPLY: если Y — скидка/купон применёны, если N — были отключены менеджером.

Корзина заказа (SaleBasket)

Про работу с корзиной была отдельная статья, привязать и получить корзину заказа можно так:

Свойства заказа (SalePropertyValueCollection)

Свойства заказа — объекты BitrixSalePropertyValue — собраны в коллекции propertyCollection

Получить значения всех свойств и группы свойств можно так:

У многих свойств заказа есть определенное встроенное назначение (атрибуты IS_EMAIL, IS_PAYER, IS_LOCATION, IS_LOCATION4TAX, IS_PROFILE_NAME, IS_ZIP, IS_PHONE, IS_ADDRESS). Такие свойства можно получить следующими методами:

Получить значение свойства по ID:

В любом случае получаем значение свойства — экземпляр класса BitrixSalePropertyValue. Из него мы можем получить значение свойства:

И информацию о самом свойстве:

Чтобы изменить значение свойства следует вызвать метод setValue и сохранить сущность

Оплаты заказа (SalePaymentCollection)

Из коллекции оплат также можно получить информацию об оплате, что и из объекта заказа. Оплата с внутреннего счета также считается одной из оплат:

Коллекция содержит объекты оплаты SalePayment с информацией об оплатах:

Оплатить или вернуть оплату можно методами setPaid(), setReturn():

Инициировать оплату (вывести шаблон оплаты: форму, кнопку и т.п.) можно следующим образом:

Пример оформления заказа в D7

Для примера приведу простейший код оформления заказа с комментариями

Метод устарел. Рекомендуется использовать методы класса BitrixSaleOrder.

Метод возвращает результат выборки записей из заказов в соответствии со своими параметрами. Нестатический метод.

Параметры вызова

Параметр Описание С версии
arOrder Массив, в соответствии с которым сортируются результирующие записи. Массив имеет вид: В качестве "название_поляN" может стоять любое поле заказа, а в качестве "направление_сортировкиX" могут быть значения "ASC" (по возрастанию) и "DESC" (по убыванию).

Если массив сортировки имеет несколько элементов, то результирующий набор сортируется последовательно по каждому элементу (т.е. сначала сортируется по первому элементу, потом результат сортируется по второму и т.д.).

arFilter Массив, в соответствии с которым фильтруются записи заказов. Массив имеет вид: Удовлетворяющие фильтру записи возвращаются в результате, а записи, которые не удовлетворяют условиям фильтра, отбрасываются.

Допустимыми являются следующие модификаторы:

  • ! — отрицание;
  • + — значения null, 0 и пустая строка так же удовлетворяют условиям фильтра.

Допустимыми являются следующие операторы:

  • >= — значение поля больше или равно передаваемой в фильтр величины;
  • > — значение поля строго больше передаваемой в фильтр величины;
  • //можно использовать и массив купонов для поиска: CSaleOrder::GetList(array(), array(‘BASKET_DISCOUNT_COUPON’ => array(‘TEST1’, ‘TEST2’)));

Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.

Методы класса

Класс устарел. Рекомендуется использовать класс BitrixSaleOrder.

Метод Описание С версии
GetList Метод возвращает результат выборки записей из заказов в соответствии со своими параметрами. 3.3.0
GetByID Метод возвращает параметры заказа с кодом ID. 3.3.0
PayOrder Метод меняет значение флага "заказ оплачен" (поле PAYED) на значение параметра Val для заказа с кодом ID. 3.3.0
DeliverOrder Метод меняет значение флага "доставка разрешена" (поле ALLOW_DELIVERY) на значение параметра Val для заказа с кодом ID. 3.3.0
DoSaveOrder Метод выполняет сохранение данных заказа. 11.5.0
CancelOrder Метод меняет значение флага "заказ отменён" (поле CANCELED) на значение параметра Val для заказа с кодом ID. 3.3.0
StatusOrder Метод меняет значение статуса заказа (поле STATUS_ID) на значение параметра Val для заказа с кодом ID. 3.3.0
CommentsOrder Метод устанавливает новое значение Val комментария (поле COMMENTS) к заказу с кодом ID 3.3.0
Delete Метод удаляет заказ с кодом ID. 3.3.0
Add Метод добавляет новый заказ с параметрами из массива arFields. 3.3.0
Update Метод изменяет параметры заказа с кодом ID на новые параметры из массива arFields. 3.3.0

Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.


[an error occurred while processing the directive]
Карта сайта