diff --git a/addons/spreadsheet/i18n/spreadsheet.pot b/addons/spreadsheet/i18n/spreadsheet.pot index b9ecdd862ab..ae5d1abf857 100644 --- a/addons/spreadsheet/i18n/spreadsheet.pot +++ b/addons/spreadsheet/i18n/spreadsheet.pot @@ -2138,6 +2138,13 @@ msgstr "" msgid "Field name." msgstr "" +#. module: spreadsheet +#. odoo-javascript +#: code:addons/spreadsheet/static/src/list/list_data_source.js:0 +#, python-format +msgid "Fields of type \"%s\" are not supported" +msgstr "" + #. module: spreadsheet #. odoo-javascript #: code:addons/spreadsheet/static/src/o_spreadsheet/o_spreadsheet.js:0 diff --git a/addons/spreadsheet/static/src/list/list_data_source.js b/addons/spreadsheet/static/src/list/list_data_source.js index 315c1867fb9..fbd97adac66 100644 --- a/addons/spreadsheet/static/src/list/list_data_source.js +++ b/addons/spreadsheet/static/src/list/list_data_source.js @@ -165,6 +165,8 @@ export default class ListDataSource extends OdooViewsDataSource { const properties = record[fieldName] || []; return properties.map((property) => property.string).join(", "); } + case "json": + throw new Error(sprintf(_t('Fields of type "%s" are not supported'), "json")); default: return record[fieldName] || ""; } diff --git a/addons/spreadsheet/static/tests/lists/list_plugin_test.js b/addons/spreadsheet/static/tests/lists/list_plugin_test.js index edabece18ca..c1fcfddb4e2 100644 --- a/addons/spreadsheet/static/tests/lists/list_plugin_test.js +++ b/addons/spreadsheet/static/tests/lists/list_plugin_test.js @@ -119,6 +119,22 @@ QUnit.module("spreadsheet > list plugin", {}, () => { assert.strictEqual(getEvaluatedCell(model, "G3").format, "[$$]#,##0.00"); }); + QUnit.test("Json fields are not supported in list formulas", async function (assert) { + const { model } = await createSpreadsheetWithList({ + columns: ["foo", "jsonField"], + linesNumber: 2, + }); + setCellContent(model, "A1", `=ODOO.LIST(1,1,"foo")`); + setCellContent(model, "A2", `=ODOO.LIST(1,1,"jsonField")`); + await waitForDataSourcesLoaded(model); + assert.strictEqual(getEvaluatedCell(model, "A1").value, 12); + assert.strictEqual(getEvaluatedCell(model, "A2").value, "#ERROR"); + assert.strictEqual( + getEvaluatedCell(model, "A2").error.message, + `Fields of type "json" are not supported` + ); + }); + QUnit.test("can select a List from cell formula", async function (assert) { const { model } = await createSpreadsheetWithList(); const sheetId = model.getters.getActiveSheetId(); diff --git a/addons/spreadsheet/static/tests/utils/data.js b/addons/spreadsheet/static/tests/utils/data.js index ea3aaceeb42..96f2acd94a8 100644 --- a/addons/spreadsheet/static/tests/utils/data.js +++ b/addons/spreadsheet/static/tests/utils/data.js @@ -348,6 +348,11 @@ export function getBasicData() { sortable: true, searchable: true, }, + jsonField: { + string: "Json Field", + type: "json", + store: true, + }, }, records: [ {