Курсовая разница
Всем привет!
Коллеги, появилась удивительная проблема: при расчете курсовой разницы периодической операцией из ГК по определенному счету вылетает ошибка:
"Ошибка в суммы в валюте 'RUR'. Необходимо округлить до '0,00'." и "Сумма в -22 293 038 037,63 -22 293 038 037,63, кот. проведена по счету 'У66.22', слишком мала.
". В итоге транзакция откатывается и пользователю не удается рассчитать курсовую разницу.
Насколько я понял, проблема в округлении чисел, разрядность которых превосходит тип real (16 знаков). По стеку ошибка вылетает на следующем методе:
static boolean checkRoundOff(LedgerAccount _accountNum,
AmountMST _amountMST)
{
if (_amountMST != Currency::amount(_amountMST))
{
error(strFmt("@SYS27168",CompanyInfo::find().currencyCode,
Currency::roundOffAmount(CompanyInfo::find().currencyCode)));
return checkFailed(strFmt("@SYS18429",
_amountMST,
Currency::amount(_amountMST),
_accountNum));
}
return true;
}
Основная валюта компании рубли, в настройках ГК округление настроено как 0.00
|