diff --git a/addons/hr/static/src/views/fields/many2one_avatar_employee_field/many2one_avatar_employee_field.js b/addons/hr/static/src/views/fields/many2one_avatar_employee_field/many2one_avatar_employee_field.js index aa475f05bb0..fb3f520e758 100644 --- a/addons/hr/static/src/views/fields/many2one_avatar_employee_field/many2one_avatar_employee_field.js +++ b/addons/hr/static/src/views/fields/many2one_avatar_employee_field/many2one_avatar_employee_field.js @@ -11,7 +11,14 @@ import { EmployeeFieldRelationMixin } from "@hr/views/fields/employee_field_rela export class Many2OneAvatarEmployeeField extends EmployeeFieldRelationMixin( Many2OneAvatarUserField -) {} +) { + get many2OneProps() { + return { + ...super.many2OneProps, + relation: this.relation, + }; + } +} export const many2OneAvatarEmployeeField = { ...many2OneAvatarUserField, @@ -31,7 +38,14 @@ registry.category("fields").add("many2one_avatar_employee", many2OneAvatarEmploy export class KanbanMany2OneAvatarEmployeeField extends EmployeeFieldRelationMixin( KanbanMany2OneAvatarUserField -) {} +) { + get many2OneProps() { + return { + ...super.many2OneProps, + relation: this.relation, + }; + } +} export const kanbanMany2OneAvatarEmployeeField = { ...kanbanMany2OneAvatarUserField, diff --git a/addons/hr/static/tests/m2x_avatar_employee_tests.js b/addons/hr/static/tests/m2x_avatar_employee_tests.js index 24fe8c75122..697c423b8db 100644 --- a/addons/hr/static/tests/m2x_avatar_employee_tests.js +++ b/addons/hr/static/tests/m2x_avatar_employee_tests.js @@ -8,6 +8,8 @@ import { dom } from "@web/../tests/legacy/helpers/test_utils"; import { contains } from "@web/../tests/utils"; import { registry } from "@web/core/registry"; import { makeFakeUserService } from "@web/../tests/helpers/mock_services"; +import { selectDropdownItem } from "@web/../tests/helpers/utils"; +import { makeView, setupViewRegistries } from "@web/../tests/views/helpers"; const serviceRegistry = registry.category("services"); @@ -217,6 +219,63 @@ QUnit.test("many2one_avatar_employee with relation set in options", async functi ); }); +QUnit.test("many2one_avatar_employee without hr.group_hr_user", async function (assert) { + assert.expect(2); + + setupViewRegistries(); + serviceRegistry.add( + "user", + makeFakeUserService((group) => group !== "hr.group_hr_user"), + { force: true } + ); + + await makeView({ + type: "form", + resModel: "m2x.avatar.employee", + serverData: { + models: { + "m2x.avatar.employee": { + fields: { + employee_id: { + string: "employee", type: "one2many", relation: "hr.employee" + }, + }, + records: [], + }, + "hr.employee": { + fields: { + display_name: { string: "Displayed name", type: "char" }, + }, + records: [ + { display_name: "babar" }, + ], + }, + "hr.employee.public": { + fields: { + display_name: { string: "Displayed name", type: "char" }, + }, + records: [ + { display_name: "babar" }, + ], + }, + }, + views: { + "hr.employee.public,false,list": ``, + "hr.employee.public,false,search": ``, + "hr.employee,false,list": ``, + "hr.employee,false,search": ``, + } + }, + arch: `
`, + mockRPC: function (_, { model, method }) { + if (method === "name_search" || method === "web_search_read") { + assert.strictEqual(model, "hr.employee.public"); + } + } + }); + await selectDropdownItem(document, "employee_id", "Search More..."); +}); + QUnit.test( "many2one_avatar_employee: click on an employee not associated with a user", async function (assert) {