События на сохранение заказа
События
Все сущности сохраняются в том состоянии, в котором они есть на текущий момент, т.е. сохранение происходит на уже рассчитанном заказе. Сохранение всегда происходит через метод заказа save()
. При этом сохраняется не только заказ, но и все связанные с ним сущности (оплаты и отгрузки) именно в том консистентном состоянии, которое было достигнуто путем расчетов объектов:
/** \Bitrix\Sale\Order $order */ $order = \Bitrix\Sale\Order::load(18); $order->setField("USER_DESCRIPTION", "Доставить к подъезду"); $shipmentCollection = $order->getShipmentCollection(); /** \Bitrix\Sale\Shipment $shipment */ foreach ($shipmentCollection as $shipment) { if (!$shipment->isSystem()) $shipment->allowDelivery(); } $order->save();
Вмешаться в процесс сохранения можно с помощью двух событий на сохранение заказа.
Событие | Описание и параметры | ||||||
---|---|---|---|---|---|---|---|
OnSaleOrderBeforeSaved | Происходит в самом начале процесса сохранения.
Параметры
|
||||||
OnSaleOrderSaved | Происходит в конце сохранения, когда заказ и все связанные сущности уже сохранены.
Параметры
|
Примеры
//пример использования события OnSaleOrderSaved use Bitrix\Main; Main\EventManager::getInstance()->addEventHandler( 'sale', 'OnSaleOrderSaved', 'myFunction' ); //в обработчике получаем сумму, с которой планируются некоторые действия в дальнейшем: function myFunction(Main\Event $event) { /** @var Order $order */ $order = $event->getParameter("ENTITY"); $oldValues = $event->getParameter("VALUES"); $isNew = $event->getParameter("IS_NEW"); if ($isNew) { $sum = $order->getPrice(); // . . . } }
© «Битрикс», 2001-2024, «1С-Битрикс», 2024