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

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

	$registry = SaleRegistry::getInstance($registryType);
	/** @var SalePayment $paymentClassName */
	$paymentClassName = $registry->getPaymentClassName();

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

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

	if ($check::getSupportedRelatedEntityType() === Check::SUPPORTED_ENTITY_TYPE_PAYMENT
		|| $check::getSupportedRelatedEntityType() === Check::SUPPORTED_ENTITY_TYPE_ALL
	)
	{
		if (Manager::isSupportedFFD105())
		{
			$dbRes = $paymentClassName::getList(array(
				'select' => array('ID', 'ACCOUNT_NUMBER', 'SUM', 'CURRENCY', 'NAME' => 'PAY_SYSTEM.NAME'),
				'filter' => array(
					'!ID' => $paymentId,
					'=ORDER_ID' => $paymentData['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;
			}
		}
	}
	if ($check::getSupportedRelatedEntityType() === Check::SUPPORTED_ENTITY_TYPE_SHIPMENT
		|| $check::getSupportedRelatedEntityType() === Check::SUPPORTED_ENTITY_TYPE_ALL
	)
	{
		/** @var SaleShipment $shipmentClassName */
		$shipmentClassName = $registry->getShipmentClassName();
		$dbRes = $shipmentClassName::getList(array(
			'select' => array('ID', 'ACCOUNT_NUMBER', 'PRICE_DELIVERY', 'CURRENCY', 'NAME' => 'DELIVERY.NAME'),
			'filter' => array(
				'=ORDER_ID' => $paymentData['ORDER_ID'],
				'SYSTEM' => 'N'
			)
		));

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

	return $result;
}