Тип ссылки на количество и т. д.

Последние несколько дней я работал над ADempiere и кое-что запутался.

Я создал новый столбец в своей таблице базы данных с именем Other_Number со ссылочным типом Quantity. Максимальная длина 20.

В моем исходном коде Java я использовал BigDecimal.

Теперь каждый раз, когда я пытаюсь ввести ровно 20 цифр в поле Other_Number, последние 4 цифры округляются. Скажем, если я ввожу 12345678901234567891. Когда я пытаюсь сохранить его, он становится 12345678901234567000.

Кроме этого. Ко всем записям, сохраняемым в базе данных (PSQL), добавляется «.000000000000» (это 12 нулей).

Теперь мне нужно что-то сделать, чтобы при вводе 20 цифр последние 4 цифры не округлялись.

Также мне нужно избавиться от этого ".000000000000"

Скажите, пожалуйста, почему это происходит?


person RhanCandia    schedule 19.11.2013    source источник


Ответы (4)


ADempiere как программное обеспечение ERP для финансовых операций имеет решающее значение в том, как оно работает с финансовыми суммами. В базе данных точное значение BigDecimal должно поддерживать целостность данных. Точность и округление были выполнены в коде настолько идеально, насколько это возможно. Являясь частью установленного известного проекта Compiere ERP, от которого также являются ответвлениями iDempiere и Openbravo, такое управление финансовыми суммами уже хорошо определено и решено. Возможно, вам нужно установить точность в соответствующем окне http://wiki.idempiere.org/en/Currency_%28Window_ID-115%29 введите здесь описание изображения

person red1    schedule 02.01.2016

Если на самом деле вам нужен не номер, а какое-то справочное поле, содержащее только числовые цифры, измените определение в Словаре приложений следующим образом:

Reference: String 
Length: 20 
Value Format: 00000000000000000000 (i.e. 20 Zeros!)

Это приведет к тому, что ввод будет только числовым (т. Е. Буквенные символы будут игнорироваться!), И поскольку это строка, округление не будет Строка из 20 цифр

person Colin Rooney    schedule 14.10.2015

Adempiere будет поддерживать до 14 (+5) цифр (триллионов) суммы/количества бизнеса (валюта в долларах США).

What currency you are using, is it possible to use this much amount/quantity in ERP system ?

Если вы хотите изменить логику, вы можете изменить логику в методе getNumberFormat класса DispalyType.java.

Каков был бизнес-сценарий?

person Giri    schedule 20.11.2013

В Java-коде Adempiere используется метод setScale для округления значения.

Пример:

    BigDecimal len= value           
    len= len.setScale(2,4);
    setLength(len);
person Silviaa    schedule 22.11.2013