diff --git a/addons/web/static/src/views/relational_model.js b/addons/web/static/src/views/relational_model.js index 87c8335791b..15b29506aad 100644 --- a/addons/web/static/src/views/relational_model.js +++ b/addons/web/static/src/views/relational_model.js @@ -754,8 +754,7 @@ export class Record extends DataPoint { getFieldDomain(fieldName) { const rawDomains = [ this._domains[fieldName] || [], - this.fields[fieldName].domain || [], - this.activeFields[fieldName].domain, + this.activeFields[fieldName].domain || this.fields[fieldName].domain || [], ]; const evalContext = this.evalContext; diff --git a/addons/web/static/tests/views/fields/many2one_field_tests.js b/addons/web/static/tests/views/fields/many2one_field_tests.js index d7edf34b600..81286693fbf 100644 --- a/addons/web/static/tests/views/fields/many2one_field_tests.js +++ b/addons/web/static/tests/views/fields/many2one_field_tests.js @@ -3602,6 +3602,33 @@ QUnit.module("Fields", (hooks) => { assert.containsOnce(target, ".o_field_many2one .o-autocomplete--dropdown-item"); }); + QUnit.test("many2one: domain set in view and on field", async function (assert) { + assert.expect(2); + serverData.models.partner.fields.trululu.domain = "[('foo' ,'=', 'boum')]"; + + await makeView({ + type: "list", + resModel: "partner", + serverData, + arch: ` + + + + `, + mockRPC(route, { kwargs, method }) { + if (method === "name_search") { + // should only use the domain set in the view + assert.deepEqual(kwargs.args, [["foo", "=", "blip"]]); + } + }, + }); + + await click(target.querySelectorAll(".o_data_cell")[0]); + await click(target, ".o_field_many2one input"); + + assert.containsOnce(target, ".o_field_many2one .o-autocomplete--dropdown-item"); + }); + QUnit.test("many2one: domain updated by an onchange", async function (assert) { assert.expect(2);