diff --git a/addons/web/static/src/views/fields/formatters.js b/addons/web/static/src/views/fields/formatters.js index a1e5a2fecc1..d2e0f3c39af 100644 --- a/addons/web/static/src/views/fields/formatters.js +++ b/addons/web/static/src/views/fields/formatters.js @@ -200,7 +200,7 @@ export function formatFloatTime(value, options = {}) { let hour = Math.floor(value); // Although looking quite overkill, the following line ensures that we do // not have float issues while still considering that 59s is 00:00. - let min = Math.floor(Math.round((value % 1) * 100) / 100 * 60); + let min = Math.floor((Math.round((value % 1) * 100) / 100) * 60); if (min === 60) { min = 0; hour = hour + 1; @@ -211,7 +211,7 @@ export function formatFloatTime(value, options = {}) { } let sec = ""; if (options.displaySeconds) { - sec = ":" + `${(Math.round((value % 1) * 3600) - min * 60)}`.padStart(2, "0"); + sec = ":" + `${Math.round((value % 1) * 3600) - min * 60}`.padStart(2, "0"); } return `${isNegative ? "-" : ""}${hour}:${min}${sec}`; } @@ -421,6 +421,7 @@ registry .add("html", (value) => value) .add("integer", formatInteger) .add("many2one", formatMany2one) + .add("many2one_reference", formatInteger) .add("one2many", formatX2many) .add("many2many", formatX2many) .add("monetary", formatMonetary) diff --git a/addons/web/static/src/views/fields/many2one_reference/many2one_reference_field.js b/addons/web/static/src/views/fields/many2one_reference/many2one_reference_field.js new file mode 100644 index 00000000000..d0822a2fba6 --- /dev/null +++ b/addons/web/static/src/views/fields/many2one_reference/many2one_reference_field.js @@ -0,0 +1,6 @@ +/** @odoo-module **/ + +import { registry } from "@web/core/registry"; +import { IntegerField } from "../integer/integer_field"; + +registry.category("fields").add("many2one_reference", IntegerField); diff --git a/addons/web/static/tests/views/fields/many2one_reference_field_tests.js b/addons/web/static/tests/views/fields/many2one_reference_field_tests.js new file mode 100644 index 00000000000..8613e53e100 --- /dev/null +++ b/addons/web/static/tests/views/fields/many2one_reference_field_tests.js @@ -0,0 +1,69 @@ +/** @odoo-module **/ + +import { getFixture, getNodesTextContent } from "@web/../tests/helpers/utils"; +import { makeView, setupViewRegistries } from "@web/../tests/views/helpers"; + +let serverData; +let target; + +QUnit.module("Fields", (hooks) => { + hooks.beforeEach(() => { + target = getFixture(); + serverData = { + models: { + partner: { + fields: { + res_id: { + string: "Ressource Id", + type: "many2one_reference", + }, + }, + records: [ + { id: 1, res_id: 10 }, + { id: 2, res_id: false }, + ], + }, + }, + }; + + setupViewRegistries(); + }); + + QUnit.module("Many2OneReferenceField"); + + QUnit.test("Many2OneReferenceField in form view", async function (assert) { + await makeView({ + type: "form", + serverData, + resModel: "partner", + resId: 1, + arch: '
', + }); + + assert.strictEqual(target.querySelector(".o_field_widget input").value, "10"); + }); + + QUnit.test("Many2OneReferenceField in list view", async function (assert) { + await makeView({ + type: "list", + serverData, + resModel: "partner", + resId: 1, + arch: '