• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/cashbox/checkmanager.php
  • Класс: BitrixSaleCashboxCheckManager
  • Вызов: CheckManager::getRelatedEntitiesForShipment
static function getRelatedEntitiesForShipment($checkType, $shipmentId, $registryType = SaleRegistry::REGISTRY_TYPE_ORDER)
{
	$result = array();

	if (!Manager::isSupportedFFD105())
	{
		return $result;
	}

	$check = self::createByType($checkType);
	if ($check === null)
	{
		throw new MainArgumentTypeException($checkType);
	}

	$registry = SaleRegistry::getInstance($registryType);
	/** @var SaleShipment $shipmentClassName */
	$shipmentClassName = $registry->getShipmentClassName();

	$dbRes = $shipmentClassName::getList(array(
		'select' => array('ORDER_ID'),
		'filter' => array('=ID' => $shipmentId)
	));

	$shipmentData = $dbRes->fetch();
	if (!$shipmentData)
	{
		return $result;
	}

	if ($check::getSupportedRelatedEntityType() === Check::SUPPORTED_ENTITY_TYPE_SHIPMENT
		|| $check::getSupportedRelatedEntityType() === Check::SUPPORTED_ENTITY_TYPE_ALL
	)
	{
		$dbRes = $shipmentClassName::getList(array(
			'select' => array('ID', 'ACCOUNT_NUMBER', 'PRICE_DELIVERY', 'CURRENCY', 'NAME' => 'DELIVERY.NAME'),
			'filter' => array(
				'!ID' => $shipmentId,
				'=ORDER_ID' => $shipmentData['ORDER_ID'],
				'SYSTEM' => 'N'
			)
		));

		while ($data = $dbRes->fetch())
		{
			$result['SHIPMENTS'][$data['ID']] = $data;
		}
	}

	if ($check::getSupportedRelatedEntityType() === Check::SUPPORTED_ENTITY_TYPE_PAYMENT
		|| $check::getSupportedRelatedEntityType() === Check::SUPPORTED_ENTITY_TYPE_ALL
	)
	{
		/** @var SalePayment $paymentClassName */
		$paymentClassName = $registry->getPaymentClassName();
		$dbRes = $paymentClassName::getList(array(
			'select' => array('ID', 'ACCOUNT_NUMBER', 'SUM', 'CURRENCY', 'NAME' => 'PAY_SYSTEM.NAME'),
			'filter' => array(
				'=ORDER_ID' => $shipmentData['ORDER_ID']
			)
		));

		while ($data = $dbRes->fetch())
		{
			$data['PAYMENT_TYPES'] = array(
				array(
					'CODE' => SaleCashboxCheck::PAYMENT_TYPE_ADVANCE,
					'NAME' => Loc::getMessage('SALE_CASHBOX_CHECK_ADVANCE'),
				),
				array(
					'CODE' => SaleCashboxCheck::PAYMENT_TYPE_CREDIT,
					'NAME' => Loc::getMessage('SALE_CASHBOX_CHECK_CREDIT'),
				)
			);

			$result['PAYMENTS'][$data['ID']] = $data;
		}
	}

	return $result;
}