Есть 3 нюанса, которые Вы не предусмотрели:
1) Приведение типов (При выполнении функции SaleFormatCurrency вы можете получить "3 500 рублей"(string) и сранивая с 2000(int), Вы получите - что сравниваете не 3500 и 2000, а 3 и 2000, таким образом у Вас будет неверное сравнение ).
2) У Вас на скринщоте помечено: что товар за 9тыс. бонусов отпускается при 6 тысячах и написано что условие выполняется, хотя это совсем не так
3) Вы делаете запрос в цикле, и нагружаете страницу.
Для исправления ошибок номер 1 и 2, попробуйте "продебажить" значения, которыми Вы оперируете (Вам очень поможет var_dump()).
А для исправления третьей ошибки, использовать другой фрагмент кода:
Код |
---|
<?
/* @var float Количество бонусов для подсчета */
$userBonus = 0;
/* @var string Количество бонусов для вывода в браузер */
$userBonusPrintable = 0;
if ( \Bitrix\Main\Loader::IncludeModule("sale") )
{
$arUserAccount = CSaleUserAccount::GetByID( $USER->GetID() );
if ( $arUserAccount )
{
$userBonus = $arUserAccount["CURRENT_BUDGET"];
$userBonusPrintable = \SaleFormatCurrency($arUserAccount["CURRENT_BUDGET"], $arUserAccount["CURRENCY"]);
}
}
?>
На счету <?=$userBonusPrintable;?> бонусов
<? foreach ($arElement["PRICES"] as $code => $arPrice): ?>
<div class="inner-shop--button-block">
<a
<? if ( $userBonus > $arPrice["DISCOUNT_VALUE"] ): ?>
data-module="buyoneclick"
data-id="<?= $arElement["ID"] ?>"
class="inner-shop--button">
<? else: ?>
class="inner-shop--button-disabled"
<? endif; ?>
/>
<?= GetMessage("CATALOG_BUY") ?>
</a>
</div>
<? endforeach; ?> |
P.S. Код не точный - рекомендую дебажить
