From 1c344b8955a18cac57b7feafbd0d5fdf51be87fd Mon Sep 17 00:00:00 2001 From: Mathieu Duckerts-Antoine Date: Thu, 14 Jul 2022 11:29:38 +0000 Subject: [PATCH] [FIX] web: MonetaryField: can take 0 value Before that commit a zero value for a monetary field would be wrongly considered invalid. This would block many flows (e.g. a save). Part-of: odoo/odoo#78221 --- .../src/views/basic_relational_model.js | 1 + .../web/static/src/views/relational_model.js | 1 + .../views/fields/monetary_field_tests.js | 20 +++++++++++++++++++ 3 files changed, 22 insertions(+) diff --git a/addons/web/static/src/views/basic_relational_model.js b/addons/web/static/src/views/basic_relational_model.js index 9a9c4b3ec43..0c5bab0e162 100644 --- a/addons/web/static/src/views/basic_relational_model.js +++ b/addons/web/static/src/views/basic_relational_model.js @@ -353,6 +353,7 @@ export class Record extends DataPoint { case "boolean": case "float": case "integer": + case "monetary": continue; case "one2many": case "many2many": diff --git a/addons/web/static/src/views/relational_model.js b/addons/web/static/src/views/relational_model.js index c94619e304f..9c6b286c71e 100644 --- a/addons/web/static/src/views/relational_model.js +++ b/addons/web/static/src/views/relational_model.js @@ -563,6 +563,7 @@ export class Record extends DataPoint { case "boolean": case "float": case "integer": + case "monetary": continue; case "one2many": case "many2many": diff --git a/addons/web/static/tests/views/fields/monetary_field_tests.js b/addons/web/static/tests/views/fields/monetary_field_tests.js index 6d03a17f54e..5504a8d8217 100644 --- a/addons/web/static/tests/views/fields/monetary_field_tests.js +++ b/addons/web/static/tests/views/fields/monetary_field_tests.js @@ -1140,4 +1140,24 @@ QUnit.module("Fields", (hooks) => { "Placeholder" ); }); + + QUnit.test("required monetary field with zero value", async function (assert) { + await makeView({ + type: "form", + resModel: "partner", + serverData, + arch: ` +
+ + `, + }); + + assert.containsOnce(target, ".o_form_editable"); + assert.strictEqual(target.querySelector("[name=monetary_field] input").value, "0.00"); + + await clickSave(target); + + assert.containsOnce(target, ".o_form_readonly"); + assert.strictEqual(target.querySelector("[name=monetary_field] span").innerText, "0.00"); + }); });