diff --git a/addons/spreadsheet/static/src/list/list_data_source.js b/addons/spreadsheet/static/src/list/list_data_source.js index 2f930ef47a6..5b1c1ef14e2 100644 --- a/addons/spreadsheet/static/src/list/list_data_source.js +++ b/addons/spreadsheet/static/src/list/list_data_source.js @@ -50,7 +50,7 @@ export default class ListDataSource extends OdooViewsDataSource { this.data = await this._orm.searchRead( this._metaData.resModel, domain, - this._metaData.columns.filter((f) => this.getField(f)), + this._getFieldsToFetch(), { order: orderByToString(orderBy), limit: this.limit, @@ -59,6 +59,20 @@ export default class ListDataSource extends OdooViewsDataSource { ); } + /** + * Get the fields to fetch from the server. + * Automatically add the currency field if the field is a monetary field. + */ + _getFieldsToFetch() { + const fields = this._metaData.columns.filter((f) => this.getField(f)); + for (const field of fields) { + if (this.getField(field).type === "monetary") { + fields.push(this.getField(field).currency_field); + } + } + return fields; + } + /** * @param {number} position * @returns {number} diff --git a/addons/spreadsheet/static/tests/lists/list_plugin_test.js b/addons/spreadsheet/static/tests/lists/list_plugin_test.js index 745f50fab08..ec9b0a08ad1 100644 --- a/addons/spreadsheet/static/tests/lists/list_plugin_test.js +++ b/addons/spreadsheet/static/tests/lists/list_plugin_test.js @@ -492,4 +492,18 @@ QUnit.module("spreadsheet > list plugin", {}, () => { assert.deepEqual(model.getters.getListFieldMatching("1", filter.id), undefined); assert.deepEqual(model.getters.getListDataSource("1").getComputedDomain(), []); }); + + QUnit.test("Preload currency of monetary field", async function (assert) { + assert.expect(3); + await createSpreadsheetWithList({ + columns: ["pognon"], + mockRPC: async function (route, args, performRPC) { + if (args.method === "search_read" && args.model === "partner") { + assert.strictEqual(args.kwargs.fields.length, 2); + assert.strictEqual(args.kwargs.fields[0], "pognon"); + assert.strictEqual(args.kwargs.fields[1], "currency_id"); + } + }, + }); + }); });