• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/discount/prediction/manager.php
  • Класс: BitrixSaleDiscountPredictionManager
  • Вызов: Manager::buildTextByPredictionDiscount
private function buildTextByPredictionDiscount(Basket $basket, array $discount): ?string
{
	if (empty($discount['PREDICTION_TEXT']))
	{
		return null;
	}
	$manager = DiscountPresetManager::getInstance();
	$preset = $manager->getPresetById($discount['PRESET_ID']);
	$state = $preset->generateState($discount);

	$currencyFormat = '# ' . $discount['CURRENCY'];
	if(Loader::includeModule('currency'))
	{
		$currencyFormat = CCurrencyLang::getCurrencyFormat($discount['CURRENCY']);
		$currencyFormat = $currencyFormat['FORMAT_STRING'];
	}

	$placeholders = array();
	if($preset instanceof OrderAmount)
	{
		$discountValue = str_replace('#', $state['discount_value'], $currencyFormat);
		if($state['discount_type'] === 'Perc')
		{
			$discountValue = $state['discount_value'] . ' %';
		}

		$shortage = $state['discount_order_amount'] - $basket->getPrice();
		if($shortage <= 0)
		{
			return null;
		}

		$shortage = PriceMaths::roundPrecision($shortage);

		$placeholders = array(
			'#SHORTAGE#' => str_replace('#', $shortage, $currencyFormat),
			'#DISCOUNT_VALUE#' => $discountValue,
		);
	}

	return str_replace(
		array_keys($placeholders),
		array_values($placeholders),
		(string)$discount['PREDICTION_TEXT']
	);
}