• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/delivery/requests/manager.php
  • Класс: BitrixSaleDeliveryRequestsManager
  • Вызов: Manager::deleteDeliveryRequest
static function deleteDeliveryRequest($requestId)
{
	$result = new Result();
	$shipmentIds = [];

	if (empty($requestId))
	{
		$result->addError(new MainError(Loc::getMessage('SALE_DLVR_REQ_MNGR_ERROR_REQ_ID')));
		return $result;
	}

	if ($deliveryRequestHandler = self::getDeliveryRequestHandlerByRequestId($requestId))
	{
		$res = $deliveryRequestHandler->delete($requestId);

		if (!$res->isSuccess())
			$result->addErrors($res->getErrors());
	}

	if ($result->isSuccess())
	{
		$requestShipmentList = ShipmentTable::getList(array('filter' => array('=REQUEST_ID' => $requestId)));
		while ($requestShipment = $requestShipmentList->fetch())
		{
			$shipmentIds[] = $requestShipment['SHIPMENT_ID'];
		}

		$con = MainApplication::getConnection();
		$con->queryExecute("DELETE FROM ".ShipmentTable::getTableName()." WHERE REQUEST_ID=".intval($requestId));
		$res = RequestTable::delete($requestId);

		if (!$res->isSuccess())
			$result->addErrors($res->getErrors());
	}

	(new MainEvent(
		'sale',
		self::REQUEST_DELETED_EVENT_CODE,
		[
			'REQUEST_ID' => $requestId,
			'SHIPMENT_IDS' => $shipmentIds,
			'RESULT' => $result
		]
	))->send();

	if ($result->isSuccess() && Loader::includeModule('pull'))
	{
		CPullWatch::AddToStack(
			'SALE_DELIVERY_REQUEST',
			[
				'module_id' => 'sale',
				'command' => 'onDeliveryRequestDelete',
				'params' => [
					'ID' => $requestId,
				]
			]
		);
	}

	return $result;
}