- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/orderbase.php
- Класс: BitrixSaleOrderBase
- Вызов: OrderBase::delete
static function delete($id)
{
$result = new Result();
$registry = Registry::getInstance(static::getRegistryType());
/** @var OrderBase $orderClassName */
$orderClassName = $registry->getOrderClassName();
if (!$order = $orderClassName::load($id))
{
$result->addError(new ResultError(Loc::getMessage('SALE_ORDER_ENTITY_NOT_FOUND'), 'SALE_ORDER_ENTITY_NOT_FOUND'));
return $result;
}
/** @var Notify $notifyClassName */
$notifyClassName = $registry->getNotifyClassName();
$notifyClassName::setNotifyDisable(true);
/** @var Result $r */
$r = $order->setField('CANCELED', 'Y');
if (!$r->isSuccess())
{
$result->addErrors($r->getErrors());
return $result;
}
$r = $order->save();
if (!$r->isSuccess())
{
$result->addErrors($r->getErrors());
return $result;
}
static::deleteEntities($order);
$event = new MainEvent(
'sale',
EventActions::EVENT_ON_BEFORE_ORDER_DELETE,
array('ENTITY' => $order)
);
$event->send();
foreach ($event->getResults() as $eventResult)
{
$return = null;
if ($eventResult->getType() == MainEventResult::ERROR)
{
if ($eventResultData = $eventResult->getParameters())
{
if (isset($eventResultData) && $eventResultData instanceof ResultError)
{
/** @var ResultError $errorMsg */
$errorMsg = $eventResultData;
}
}
if (!isset($errorMsg))
$errorMsg = new ResultError('EVENT_ORDER_DELETE_ERROR');
$result->addError($errorMsg);
return $result;
}
}
/** @var Result $r */
$r = $order->save();
if ($r->isSuccess())
{
/** @var MainEntityDeleteResult $r */
$r = static::deleteInternal($id);
if ($r->isSuccess())
static::deleteExternalEntities($id);
}
else
{
$result->addErrors($r->getErrors());
}
$notifyClassName::setNotifyDisable(false);
$event = new MainEvent(
'sale',
EventActions::EVENT_ON_ORDER_DELETED,
array('ENTITY' => $order, 'VALUE' => $r->isSuccess())
);
$event->send();
$result->addData(array('ORDER' => $order));
return $result;
}