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

Как автоматически изменить статус заказа при смене статуса доставки?

Помогите разобраться, как можно сделать автоматизированную смену статуса заказа при смене статуса доставки при редактировании заказа? Например, выставляем статус доставки "Передан в службу доставки [DS]", и при этом автоматически меняется статус заказа на "Отправлен[O]"?
  • Вопрос задан
  • 419 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
winer
@winer
занимаюсь разработкой сайтов на 1c-bitrix
$bxEventManager = \Bitrix\Main\EventManager::getInstance();

        $bxEventManager->addEventHandler(
            'sale',
            'OnSaleShipmentEntitySaved',
            array(
                "\\Gricuk\\Shipment",
                "onSaleShipmentSavedHandler"
            )
        );


<?php
namespace Gricuk;


use Bitrix\Main\Event;
use Bitrix\Main\EventResult;
use Bitrix\Main\Result;

class Shipment
{
    public static function onSaleShipmentSavedHandler(\Bitrix\Main\Event $event)
    {
        /** @var \Bitrix\Sale\Shipment $shipment */
        $shipment = $event->getParameter("ENTITY");
        $oldValues = $event->getParameter("VALUES");

        $shipmentFields = $shipment->getFieldValues();
        /**
         * Ключ - статус ДОСТАВКИ
         * Значение - статус ЗАКАЗА
         */
        $statusMap = [
            "DR" => "F",
            "DB" => "RS"
        ];
        if (isset($statusMap[$shipmentFields["STATUS_ID"]])) {
            try {
                $orderId = $shipment->getParentOrderId();
                $order = \Bitrix\Sale\Order::load($orderId);
                $order->setField("STATUS_ID", $statusMap[$shipmentFields["STATUS_ID"]]);

                /** @var Result $saveResult */
                $saveResult = $order->save();
                if (!$saveResult->isSuccess()) {
                    \Bitrix\Main\Diag\Debug::dumpToFile($saveResult, '$saveResult', 'onSaleShipmentSavedHandler.log');
                }
            } catch (\Exception $e) {
                \Bitrix\Main\Diag\Debug::dumpToFile($e, '$e', 'onSaleShipmentSavedHandler.log');
            }
        }
    }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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