• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/archive/process/orderarchivecollection.php
  • Класс: BitrixSaleArchiveProcessOrderArchiveCollection
  • Вызов: OrderArchiveCollection::collectRules
private function collectRules($orderIds)
{
	$sortedRules =
	$discountList =
	$rulesList = [];

	$ruleIterator = InternalsOrderRulesTable::getList(array(
		'filter' => array('=ORDER_ID' => $orderIds),
		'order' => array('ID' => 'ASC'),
		'select' => ['*', 'RULE_DESCR' => 'DESCR.DESCR', 'RULE_DESCR_ID' => 'DESCR.ID']
	));

	while ($rule = $ruleIterator->fetch())
	{
		$discountList[] = $rule['ORDER_DISCOUNT_ID'];
		$rulesList[$rule['ID']] = $rule;
	}

	$discountList = array_unique($discountList);

	if (!empty($discountList))
	{
		$discountIterator = InternalsOrderDiscountTable::getList(array(
			'filter' => array('@ID' => $discountList),
		));

		while ($discount = $discountIterator->fetch())
		{
			$discountList[$discount['ID']] = $discount;
		}
	}

	foreach ($rulesList as $id => $rule)
	{
		$rule["DISCOUNT_DATA"] = $discountList[$rule['ORDER_DISCOUNT_ID']] ? $discountList[$rule['ORDER_DISCOUNT_ID']] : array();
		$sortedRules[$rule['ORDER_ID']][$id] = $rule;
	}

	return $sortedRules;
}