forum.bitel.ru
http://forum.bitel.ru/

MPS sbrf формат REC_SUM
http://forum.bitel.ru/viewtopic.php?f=18&t=13602
Страница 1 из 1

Автор:  afedorov [ 31 май 2023, 21:42 ]
Заголовок сообщения:  MPS sbrf формат REC_SUM

Как можно изменить формат в REC_SUM, чтобы десятичным разделителем стала точка? Сейчас там запятая.
Сбер говорит сделайте точку и рекомендованная сумма будет показываться.
Cумма вычисляется в событии и там формат "0.00"

Код:
public class RecSumEvent extends EventScriptBase<MPSBeforeRequestEvent>
{
    private DecimalFormat sumFormat = new DecimalFormat("0.00") {
    };

   public void onEvent( MPSBeforeRequestEvent event, Setup setup, ConnectionSet set )
      throws Exception
   {
                 /*вычисляем result*/
                 event.getResponse().getParameters().put( "SUM", this.sumFormat.format(result) );
        }
}


В результате имеем:
<response>
<CODE>0</CODE>
<MESSAGE>Договор найден, возможен прием платежей</MESSAGE>
<FIO>ФИО</FIO>
<BALANCE>0</BALANCE>
<ACCOUNT_BALANCE>0</ACCOUNT_BALANCE>
<SUM>390,00</SUM>
<REC_SUM>390,00</REC_SUM>
</response>

Автор:  Phricker [ 01 июн 2023, 00:26 ]
Заголовок сообщения:  Re: MPS sbrf формат REC_SUM

Емнип DecimalFormat по-умолчанию использует системную локаль. И если там Ru - то скорее всего оттуда и растёт запятая.

Если в data.properties не прописано
Код:
locale.default.decimalformatsymbols.decimalseparator=,

то можно просто
Код:
import ru.bitel.common.Utils;
...
event.getResponse().getParameters().put("SUM", Utils.formatCost(result));


Если прописано (чтобы в клиенте вместо точек была запятая во многих местах), то
Код:
Utils.formatBigDecimalSumm()

Автор:  afedorov [ 01 июн 2023, 13:58 ]
Заголовок сообщения:  Re: MPS sbrf формат REC_SUM

Я так понимаю там дальше, при формировании xml, сумма из строки опять в децимал превращается и форматируется системным форматом.
Поэтому что-то форматировать в своем коде бесполезно.
Пришлось поменять локаль.
Код:
locale.default.decimalformatsymbols.decimalseparator=.

Стала точка. Надеюсь эта смена формата в других местах негативно не вылезет.
Спасибо за подсказку.

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/