diff --git a/addons/web/static/src/js/formats.js b/addons/web/static/src/js/formats.js index 3151b34636b..2fa36f3d221 100644 --- a/addons/web/static/src/js/formats.js +++ b/addons/web/static/src/js/formats.js @@ -158,12 +158,13 @@ openerp.web.parse_value = function (value, descriptor, value_if_empty) { var tmp = Number(value); if (!isNaN(tmp)) return tmp; - tmp = value.replace(openerp.web._t.database.parameters.decimal_point, "."); - var tmp2 = tmp; + + var tmp2 = tmp = value; do { tmp = tmp2; tmp2 = tmp.replace(openerp.web._t.database.parameters.thousands_sep, ""); } while(tmp !== tmp2); + tmp = tmp.replace(openerp.web._t.database.parameters.decimal_point, "."); tmp = Number(tmp); if (isNaN(tmp)) throw new Error(value + " is not a correct float"); diff --git a/addons/web/static/test/formats.js b/addons/web/static/test/formats.js index d530571583c..f9f34dd44c0 100644 --- a/addons/web/static/test/formats.js +++ b/addons/web/static/test/formats.js @@ -63,6 +63,13 @@ $(document).ready(function () { // var res = openerp.web.parse_value(val.toString("HH:mm:ss"), {type:"time"}); // equal(val.toString("HH:mm:ss"), res.toString("HH:mm:ss")); // }); + test('parse_integer', function () { + var val = openerp.web.parse_value('123,456', {type: 'integer'}); + equal(val, 123456); + openerp.web._t.database.parameters.thousands_sep = '|'; + var val2 = openerp.web.parse_value('123|456', {type: 'integer'}); + equal(val2, 123456); + }); test("parse_float", function () { var str = "134,112.1234"; var val = openerp.web.parse_value(str, {type:"float"}); @@ -70,6 +77,12 @@ $(document).ready(function () { var str = "-134,112.1234"; var val = openerp.web.parse_value(str, {type:"float"}); equal(val, -134112.1234); + _.extend(openerp.web._t.database.parameters, { + decimal_point: ',', + thousands_sep: '.' + }); + var val3 = openerp.web.parse_value('123.456,789', {type: 'float'}); + equal(val3, 123456.789); }); test('intersperse', function () { var g = openerp.web.intersperse;