- Модуль: 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);
}