Задать вопрос

Bitrix. Как на D7 установить статус заказу(в момент формирования заказа)?

Для начала немного по коду что уже есть:
<?php
require $_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php';

use Bitrix\Main\Context,
Bitrix\Currency\CurrencyManager,
Bitrix\Sale\Order,
Bitrix\Sale\Basket,
Bitrix\Sale\Delivery,
Bitrix\Sale\PaySystem,
YandexCheckout\Client;

global $USER;

Bitrix\Main\Loader::includeModule("sale");
Bitrix\Main\Loader::includeModule("catalog");

// ... здесь всякие действия по определению что за пользователь

$order = Order::create($siteId, $USER->isAuthorized() ? $USER->GetID() : $userIdTpm);// Создаём заказ

// ... здесь всякие действия по присвоению разных данных заказу

$basket = \Bitrix\Sale\Basket::loadItemsForFUser(\Bitrix\Sale\Fuser::getId(CSaleBasket::GetBasketUserID()), \Bitrix\Main\Context::getCurrent()->getSite());// Получаем корзину текущего пользователя

$order->setBasket($basket);// Применяем корзину к заказу

// ... ещё действия по присвоению разной информации корзине
// ... и где то же тут предполагается установить заказу статус DN "Ожидает обработки"(как это сделать черерз $order-> ?), поскольку если этого не сделать устанавливается статус N "Принят, ожидается оплата"

$order->doFinalAction(true);
$result = $order->save();

_________________________
Примечание: я понимаю что можно присвоить статус через методы класса, интересует как сделать прямо через объект $order?
  • Вопрос задан
  • 7011 просмотров
Подписаться 2 Простой Комментировать
Решения вопроса 2
winer
@winer
занимаюсь разработкой сайтов на 1c-bitrix
$order->setField("STATUS_ID", "DN");
Ответ написан
Комментировать
nikolaevevge
@nikolaevevge Автор вопроса
Роман Грицук ответил на вопрос, только я не верные статусы стандартные написал.
Случайно посчитал что DN это статус заказа. А оказалось это статус доставки.
Таким образом, я в статусах создал новый статус заказа - "ожидает обработки менеджером", поскольку нужного статуса заказа по-умолчанию не было.
На скрине ниже статусы которые были по-умолчанию и новый статус который я создал (Статус A):
5d1df8ab2fdd0474505168.jpeg

Таким образом в конечном счёте строчка кода выглядит так:
$order->setField("STATUS_ID", "A");

Изначально я создал заказ с статусом DN - это привело к тому что не получается даже под админом зайти в заказ. Стал разбираться и выяснилось что DN это не статус заказа.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@ddem
Создаю web-сервисы
$order->setField("CANCELED", "Y");
$order->save();
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы