• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/entitymarker.php
  • Класс: BitrixSaleEntityMarker
  • Вызов: EntityMarker::getEntity
static function getEntity(Order $order, $entityType, $entityId)
{
	static $entityList = array();

	$hash = md5($order->getId(). '|'. $entityType . '|' . $entityId);

	if (!empty($entityList[$hash]))
	{
		return $entityList[$hash];
	}

	$entity = null;
	$entityCollection = null;

	if ($entityType == static::ENTITY_TYPE_ORDER)
	{
		if ($order->getId() == $entityId)
		{
			return $order;
		}
		return null;
	}
	elseif($entityType == static::ENTITY_TYPE_SHIPMENT)
	{
		/** @var InternalsEntityCollection $entityCollection */
		$entityCollection = $order->getShipmentCollection();
	}
	elseif($entityType == static::ENTITY_TYPE_PAYMENT)
	{
		/** @var InternalsEntityCollection $entityCollection */
		$entityCollection = $order->getPaymentCollection();
	}
	elseif($entityType == static::ENTITY_TYPE_BASKET_ITEM)
	{
		/** @var InternalsEntityCollection $entityCollection */
		$entityCollection = $order->getBasket();
	}

	if ($entity === null && !$entityCollection)
		return null;

	if ($entity === null)
	{
		/** @var InternalsEntity $entity */
		if (!$entity = $entityCollection->getItemById($entityId))
		{
			return null;
		}
	}

	if ($entity !== null)
	{
		$entityList[$hash] = $entity;
	}

	return $entity;
}