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