События на сохранение заказа
События
Все сущности сохраняются в том состоянии, в котором они есть на текущий момент, т.е. сохранение происходит на уже рассчитанном заказе. Сохранение всегда происходит через метод заказа 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-2025, «1С-Битрикс», 2025