@daylight6

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

Помогите разобраться, как можно сделать автоматизированную смену статуса заказа при смене статуса доставки при редактировании заказа? Например, выставляем статус доставки "Передан в службу доставки [DS]", и при этом автоматически меняется статус заказа на "Отправлен[O]"?
  • Вопрос задан
  • 359 просмотров
Решения вопроса 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');
            }
        }
    }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы