From c6476665366ec4d0b38b0d1da11bcb962d6a6061 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sat, 28 Feb 2026 12:57:24 +0100 Subject: [PATCH] Limit digit to positive integer when formatting float in domain parser Closes #14557 (grafted from 319126552d56ef1dd8a03e457071df0d40d0607e) --HG-- branch : 7.0 --- sao/src/common.js | 1 + tryton/tryton/common/domain_parser.py | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/sao/src/common.js b/sao/src/common.js index 00f44b1c6a..48f7a13b7e 100644 --- a/sao/src/common.js +++ b/sao/src/common.js @@ -2205,6 +2205,7 @@ } var factor = Number(field.factor || 1); digit -= Math.round(Math.log10(factor)); + digit = Math.max(digit, 0); return (value * factor).toLocaleString( Sao.i18n.BC47(Sao.i18n.getlang()), { useGrouping: true, diff --git a/tryton/tryton/common/domain_parser.py b/tryton/tryton/common/domain_parser.py index 5ae7dd94fe..54eca908dd 100644 --- a/tryton/tryton/common/domain_parser.py +++ b/tryton/tryton/common/domain_parser.py @@ -349,8 +349,8 @@ def format_value(field, value, target=None, context=None, _quote_empty=False): cast = float factor = cast(field.get('factor', 1)) digit -= round(math.log10(factor)) - return locale.localize( - '{0:.{1}f}'.format(value * factor or 0, digit), True) + digit = max(digit, 0) + return locale.localize('{0:.{1}f}'.format(value * factor, digit), True) def format_selection(): if isinstance(field['selection'], (tuple, list)):