diff options
Diffstat (limited to 'addons/web')
| -rw-r--r-- | addons/web/static/src/js/fields/field_utils.js | 5 | ||||
| -rw-r--r-- | addons/web/static/tests/fields/field_utils_tests.js | 12 |
2 files changed, 15 insertions, 2 deletions
diff --git a/addons/web/static/src/js/fields/field_utils.js b/addons/web/static/src/js/fields/field_utils.js index 75403c288e5..9a6734b7baf 100644 --- a/addons/web/static/src/js/fields/field_utils.js +++ b/addons/web/static/src/js/fields/field_utils.js @@ -415,7 +415,10 @@ function parseDateTime(value, field, options) { } function parseFloat(value) { - value = value.replace(new RegExp(core._t.database.parameters.thousands_sep, "g"), ''); + if (core._t.database.parameters.thousands_sep) { + var escapedSep = _.str.escapeRegExp(core._t.database.parameters.thousands_sep); + value = value.replace(new RegExp(escapedSep, 'g'), ''); + } value = value.replace(core._t.database.parameters.decimal_point, '.'); var parsed = Number(value); if (isNaN(parsed)) { diff --git a/addons/web/static/tests/fields/field_utils_tests.js b/addons/web/static/tests/fields/field_utils_tests.js index bfd60000035..e00d45ef91f 100644 --- a/addons/web/static/tests/fields/field_utils_tests.js +++ b/addons/web/static/tests/fields/field_utils_tests.js @@ -101,7 +101,7 @@ QUnit.test('format one2many', function(assert) { }); QUnit.test('parse float', function(assert) { - assert.expect(6); + assert.expect(7); assert.strictEqual(fieldUtils.parse.float(""), 0); assert.strictEqual(fieldUtils.parse.float("0"), 0); @@ -109,6 +109,16 @@ QUnit.test('parse float', function(assert) { assert.strictEqual(fieldUtils.parse.float("-100.00"), -100); assert.strictEqual(fieldUtils.parse.float("1,000.00"), 1000); assert.strictEqual(fieldUtils.parse.float("1,000,000.00"), 1000000); + + var originalParameters = $.extend(true, {}, core._t.database.parameters); + _.extend(core._t.database.parameters, { + grouping: [3, 0], + decimal_point: ',', + thousands_sep: '.' + }); + assert.strictEqual(fieldUtils.parse.float('1.234,567'), 1234.567); + + core._t.database.parameters = originalParameters; }); QUnit.test('parse monetary', function(assert) { |
