diff --git a/addons/web/static/src/js/views/list/list_renderer.js b/addons/web/static/src/js/views/list/list_renderer.js index c3581cb1564..cf47c997597 100644 --- a/addons/web/static/src/js/views/list/list_renderer.js +++ b/addons/web/static/src/js/views/list/list_renderer.js @@ -352,7 +352,10 @@ var ListRenderer = BasicRenderer.extend({ if (!formatFunc) { formatFunc = field_utils.format[field.type]; } - var formattedValue = formatFunc(value, field, { escape: true }); + var formattedValue = formatFunc(value, field, { + escape: true, + digits: column.attrs.digits ? JSON.parse(column.attrs.digits) : undefined, + }); $cell.addClass('o_list_number').attr('title', help).html(formattedValue); } return $cell; diff --git a/addons/web/static/tests/views/list_tests.js b/addons/web/static/tests/views/list_tests.js index cd33debf27d..6e2297be1c2 100644 --- a/addons/web/static/tests/views/list_tests.js +++ b/addons/web/static/tests/views/list_tests.js @@ -1412,6 +1412,26 @@ QUnit.module('Views', { list.destroy(); }); + QUnit.test('aggregates digits can be set with digits field attribute', async function (assert) { + assert.expect(2); + + var list = await createView({ + View: ListView, + model: 'foo', + data: this.data, + arch: '' + + '' + + '', + }); + + assert.strictEqual(list.$('.o_data_row td:nth(1)').text(), '1200.00', + "field should still be formatted based on currency"); + assert.strictEqual(list.$('tfoot td:nth(1)').text(), '2000.000', + "aggregates monetary use digits attribute if available"); + + list.destroy(); + }); + QUnit.test('groups can be sorted on aggregates', async function (assert) { assert.expect(10); var list = await createView({