• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/orderdiscountbase.php
  • Класс: BitrixSaleOrderDiscountBase
  • Вызов: OrderDiscountBase::loadOrderDiscountFromDb
static function loadOrderDiscountFromDb(array $discountIds, array $discountOrder)
{
	if (empty($discountIds) || empty($discountOrder))
		return null;

	$result = [];
	$list = [];
	$iterator = static::getOrderDiscountIterator([
		'select' => ['*'],
		'filter' => ['@ID' => $discountIds]
	]);
	while ($row = $iterator->fetch())
	{
		$row['ID'] = (int)$row['ID'];
		$row['ORDER_DISCOUNT_ID'] = $row['ID'];
		$row['MODULES'] = [];
		$row['SIMPLE_ACTION'] = true;
		if (static::isNativeModule($row['MODULE_ID']))
			$row['SIMPLE_ACTION'] = self::isSimpleAction($row['APPLICATION']);
		$list[$row['ID']] = $row;
	}
	unset($row, $iterator);

	if (!empty($list))
	{
		foreach ($discountOrder as $id)
		{
			if (!isset($list[$id]))
				continue;
			$result[$id] = $list[$id];
		}
		unset($id);
	}
	unset($list);

	if (!empty($result))
	{
		$resultIds = array_keys($result);
		$discountModules = static::loadModulesFromDb($resultIds);
		if ($discountModules !== null)
		{
			foreach ($discountModules as $id => $modules)
				$result[$id]['MODULES'] = $modules;
			unset($id, $modules);
		}
		unset($discountModules);

		foreach ($resultIds as $id)
		{
			$discount = $result[$id];
			if (static::isNativeModule($discount['MODULE_ID']))
			{
				$result[$id]['EDIT_PAGE_URL'] = static::getEditUrl(['ID' => $discount['DISCOUNT_ID']]);
			}
			else
			{
				$result[$id]['EDIT_PAGE_URL'] = (string)static::executeDiscountProvider(
					['MODULE_ID' => $discount['MODULE_ID'], 'METHOD' => self::PROVIDER_ACTION_GET_URL],
					[
						['ID' => $discount['DISCOUNT_ID'], 'MODULE_ID' => $discount['MODULE_ID']]
					]
				);
			}
		}
		unset($discount, $id);
	}

	return (!empty($result) ? $result : null);
}