Битрикс: округление цен при оплате

17.03.2016  22:23

Две политики: цены с копейками или без. Каждые владельцы интернет-магазинов решают для себя, но большинство, конечно, отказывается от дробей, округляя цены до рубля. В Битриксе есть специальная настройка (Магазин —> Настройки —> Валюты —> Конкретная валюта, допустим рубли). Но есть приколы: если цены формируются с какими-нибудь наценками, то в модуле Яндекс Кассы 3.х цены с копейками, не смотря ни на что. Дабы убрать копейки при оплате, надо в файле
/bitrix/modules/sale/ru/payment/yandex_3x/payment.php

строчку
$Sum = number_format($Sum, 2, ',', '');

заменить на:
$Sum = round($Sum);
$Sum = number_format($Sum, 0, ',', '');
//$Sum = SaleFormatCurrency($Sum, "RUB", True);//можно использовать родной битриксовский пересчёт, но по-умолчанию цена будет отформатирована с пробелами, а при оплате их быть не должно, Яндекс Касса не поймёт юмора.

Такой прикол, наверняка и в других системах оплаты. Я поленился, а вообще неплохо бы добавить проверку на настройку валюты (с копейками должно быть или нет), либо же всё-таки использовать SaleFormatCurrency и вырезать пробелы (причём, желательно регуляркой, чтоб наверняка: $Sum = preg_replace("/[^0-9\.]/uis","",$Sum); ).


перейти в Блог | Блог (стр. 8)

Ударим лайками по бездорожью, разгильдяйству и бюрократизму!


Ключевые слова (тэги): 1С-Битрикс 29  PHP 39  web-программирование 62  

Вам есть что сказать — ну я же чую.
Высказаться о наболевшем, я выслушаю:
Имя


email (не публикуется)