• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/cashbox/check.php
  • Класс: BitrixSaleCashboxCheck
  • Вызов: Check::getRelatedEntities
public function getRelatedEntities()
{
	if ($this->relatedEntities)
	{
		return $this->relatedEntities;
	}

	$registry = Registry::getInstance($this->fields['ENTITY_REGISTRY_TYPE']);
	$order = null;

	$dbRes = CheckRelatedEntitiesTable::getList(array('filter' => array('CHECK_ID' => $this->getField('ID'))));
	while ($entity = $dbRes->fetch())
	{
		if ($order === null)
		{
			if ($entity['ENTITY_TYPE'] === CheckRelatedEntitiesTable::ENTITY_TYPE_PAYMENT)
			{
				/** @var Payment $paymentClassName */
				$paymentClassName = $registry->getPaymentClassName();
				$dbResPayment = $paymentClassName::getList(array(
					'select' => array('ORDER_ID'),
					'filter' => array('ID' => $entity['ENTITY_ID'])
				));
				if ($data = $dbResPayment->fetch())
				{
					/** @var Order $orderClass */
					$orderClass = $registry->getOrderClassName();
					$order = $orderClass::load($data['ORDER_ID']);
				}
			}
			elseif ($entity['ENTITY_TYPE'] === CheckRelatedEntitiesTable::ENTITY_TYPE_SHIPMENT)
			{
				/** @var Shipment $shipmentClassName */
				$shipmentClassName = $registry->getShipmentClassName();
				$dbResShipment = $shipmentClassName::getList(array(
					'select' => array('ORDER_ID'),
					'filter' => array('ID' => $entity['ENTITY_ID'])
				));
				if ($data = $dbResShipment->fetch())
				{
					/** @var Order $orderClass */
					$orderClass = $registry->getOrderClassName();
					$order = $orderClass::load($data['ORDER_ID']);
				}
			}

			if ($order === null)
			{
				continue;
			}
		}

		if ($entity['ENTITY_TYPE'] === CheckRelatedEntitiesTable::ENTITY_TYPE_PAYMENT)
		{
			$paymentCollection = $order->getPaymentCollection();
			$this->relatedEntities[$entity['ENTITY_CHECK_TYPE']][] = $paymentCollection->getItemById($entity['ENTITY_ID']);
		}
		elseif ($entity['ENTITY_TYPE'] === CheckRelatedEntitiesTable::ENTITY_TYPE_SHIPMENT)
		{
			$shipmentCollection = $order->getShipmentCollection();
			$this->relatedEntities[$entity['ENTITY_CHECK_TYPE']][] = $shipmentCollection->getItemById($entity['ENTITY_ID']);
		}
	}

	return $this->relatedEntities;
}