Работа с sale.personal.order и sale.personal.order.list в Битрикс
Последние записи
Вывести в sale.personal.order.list все заказы, в том числе отмененные
Достаточно разместить перед вызовом компонента код:
$_REQUEST['show_all']='Y';
Получаем свойство заказа на D7
use Bitrix\Sale\Internals\OrderPropsValueTable;
$obProps = OrderPropsValueTable::getList(array('filter' => array('ORDER_ID' => $orderId, 'CODE' => 'PROPERTY_CODE')));
while($prop = $obProps->Fetch()){
$arResult['ORDERS'][$key]['ORDER']['ADDITIONAL'][$prop['CODE']] = $prop['VALUE'];
}
Очищение корзины Битрикс перед повторением заказа
Допустим, мы хотим, чтобы компонент sale.personal.order.list очищал корзину перед использованием кнопки "Повторить заказ"
Наиболее простой способ - включение поддержки ЧПУ в компоненте (страница будет автообновляться) и добавление перед вызовом компонента условия
if($_REQUEST['COPY_ORDER']=='Y'){ //Проверяем, что был передан параметр COPY_ORDER
//Полная очистка корзины
CSaleBasket::DeleteAll(CSaleBasket::GetBasketUserID()); //Автоопределяем пользователя корзины и очищаем ее
//Вариант с сохранением отложенных и ожидаемых товаров
$res = CSaleBasket::GetList(array(), array(
'FUSER_ID' => CSaleBasket::GetBasketUserID(),
'LID' => SITE_ID,
'ORDER_ID' => 'null',
'DELAY' => 'N',
'CAN_BUY' => 'Y'));
while ($row = $res->fetch()) {
CSaleBasket::Delete($row['ID']);
}
}
Работа со статусом заказа
Получение статуса заказа
$order = Bitrix\Sale\Order::load($order_id);
$order->getField('STATUS_ID');
//Наиболее распространенные статусы
$STATUS_ID = array(
'F' => 'Выполнен',
'N' => 'Ждем оплату',
'P' => 'Оплачен'
);
Изменение статуса заказа
CSaleOrder::StatusOrder($order_id, 'F'); // Выполнен
Устанавливаем статус заказа "Оплачен"
CSaleOrder::PayOrder($order_id, "Y"); // статус оплачен (Y/N)
Узнаем отменен ли заказ
$order = Bitrix\Sale\Order::load($order_id);
$order->getField('CANCELED'); // заказ отменён (Y / N)
$order->getField('EMP_CANCELED_ID'); // ИД пользователя, отменивший заказ
$order->getField('DATE_CANCELED')->toString(); // дата отмены (05.01.2020 21:11:10)
$order->getField('REASON_CANCELED'); // причина отмены
Устанавливаем статус заказа "Отменен"
if (CModule::IncludeModule("sale") && CModule::IncludeModule("catalog"))
{
$order_id = $_POST['sendData']['id'];
$order = \Bitrix\Sale\Order::loadByAccountNumber($order_id);
$r = $order->setField('STATUS_ID', 'C');
if (!$r->isSuccess()){
var_dump($r->getErrorMessages());
}
$r = $order->save();
if (!$r->isSuccess()){
var_dump($r->getErrorMessages());
} else {
echo {
$_POST['sendData']['id']
}
}
Комментарии