Меню

Автоматически отгрузить заказ и сменить статус отгрузки, при выполнении заказа.

RSS
Автоматически отгрузить заказ и сменить статус отгрузки, при выполнении заказа.
 
Автоматически отгрузить заказ и сменить статус отгрузки, при выполнении заказа.

Проблема: Заказы, на сайте, обрабатываются только в 1С. При этом 1С не работает с отгрузками и обменивается только статусами: "Принят", "Оплачен" и "Выполнен". Но, по закону, после выполнения заказа нужно отправлять на печать второй чек (чек отгрузки). Что бы сайт напечатал второй чек- статус отгрузки заказа должен быть переведен в "Отгружено".
 
В заметке использовано старое событие, оно работает немного быстрее.
Но, тоже самое на D7

Код
\Bitrix\Main\EventManager::getInstance()->addEventHandler('sale', 'OnSaleStatusOrderChange', ['Handler', 'OnSaleStatusOrderChange']);
class Handler {
    function OnSaleStatusOrderChange($event)
    {
        $parameters = $event->getParameters();
        if ($parameters['VALUE'] === 'F')
        {
            Loader::includeModule("sale");
            $order = \Bitrix\Sale\Order::load($orderID);
            $collection = $order->getShipmentCollection()->getNotSystemItems();
            foreach ($collection as $shipment)
            {
                $shipment->setField('DEDUCTED', 'Y');
            }
            $order->save();
        }
        return new \Bitrix\Main\EventResult(
            \Bitrix\Main\EventResult::SUCCESS
        );
    }
}
 
Цитата
написал:
В заметке использовано старое событие, оно работает немного быстрее.
Но, тоже самое на D7

Код
 \Bitrix\Main\EventManager::getInstance()->addEventHandler('sale', 'OnSaleStatusOrderChange', ['Handler', 'OnSaleStatusOrderChange']);
class Handler {
    function OnSaleStatusOrderChange($event)
    {
        $parameters = $event->getParameters();
        if ($parameters['VALUE'] === 'F')
        {
            Loader::includeModule("sale");
            $order = \Bitrix\Sale\Order::load($orderID);
            $collection = $order->getShipmentCollection()->getNotSystemItems();
            foreach ($collection as $shipment)
            {
                $shipment->setField('DEDUCTED', 'Y');
            }
            $order->save();
        }
        return new \Bitrix\Main\EventResult(
            \Bitrix\Main\EventResult::SUCCESS
        );
    }
} 

Выдаст ошибку, $orderID не определен
Изменено: Михаил Базаров - 25.07.2024 15:44:03
 
Да, само собой. Позже поправлю кооментарий свой, нужно получить ID заказа.
где-то в событии он должен быть.
Читают тему
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
Загрузить файлы
 
Поблагодарить и поддержать:
Или подписаться на boosty канал: Видео на Bst

Блог-note: заметки разработчика

Сортировка элементов по индексу сортировки значений типа список

Внутри любого компонента есть заранее заложенные поля для сортировки элементов. Можно сортировать элементы в разных напр...

Звездочки в рейтинге Битрикс статей и товаров каталога

Задача: изменить вывод рейтинга элемента на звездочки, с помощью шаблона iblock.vote в товарах и новостях.

Вывести список всех пользователей с необходимой информацией

Если нужно, на какой-либо странице сайта, вывести всех пользователей из группы "Зарегистирированные пользователи", прост...

Вывести компонент новостей на страницу в Битрикс

Посмотрел Яндекс метрику на свой сайт, и решил что буду частенько писать сюда именно то, что ищут люди. Итак за последню...

INPUT type="file" Предпросмотр превью картинки до загрузки

Рассмотрим на примере компонента "Форма добавления-редактирования элементов инфоблока", как сделать ее более удобной для...

Как получить свойства заказа в 1С-Битрикс: старые методы и современный API D7

Задача: Получить все доступные свойства заказа для всех активных типов плательщика из модуля магазина.

Обновление цен и остатков из текстового файла, в каталоге 1C-Битрикс.

Задача: прочитать txt-файл с ценами и остатками, который выгружает программа учета по FTP, и обновить эти данные в катал...

События вызываемые при сохранении заказа, в 1С-Битрикс

Иногда необходимо выполнить определенные действия с заказом при его изменении. Для этого можно использовать события OnS...

GIT-репозиторий на собственном сервере с веб-интерфейсом: Gitea - аналог GitHub

Задача: Развернуть git-репозиторий на собственном сервере с помощью Gitea — для ведения проектов, с веб-интерфейсом и по...