summaryrefslogtreecommitdiff
path: root/addons/web/static
diff options
context:
space:
mode:
authorqsm-odoo <qsm@odoo.com>2017-03-31 13:37:57 +0200
committerAaron Bohy <aab@odoo.com>2017-04-11 19:44:38 +0200
commitd6d7923c679250f6091e06e9f6dcbcd4fd6230da (patch)
treeff04399a6b2cb5764302dafe872df27011151f86 /addons/web/static
parentc35e0f132f20011cfc6017121d4957df0b199721 (diff)
[FIX] web: format monetary field value as a float in edit mode
Before this commit, if a field was declared as a "Monetary" field in the model, the `FieldMonetary` was adding the currency symbol in the <input/> in edit mode.
Diffstat (limited to 'addons/web/static')
-rw-r--r--addons/web/static/src/js/fields/basic_fields.js7
-rw-r--r--addons/web/static/test/fields/basic_fields_tests.js32
2 files changed, 34 insertions, 5 deletions
diff --git a/addons/web/static/src/js/fields/basic_fields.js b/addons/web/static/src/js/fields/basic_fields.js
index e3bb809a88c..dcfc0671b0a 100644
--- a/addons/web/static/src/js/fields/basic_fields.js
+++ b/addons/web/static/src/js/fields/basic_fields.js
@@ -394,11 +394,8 @@ var FieldMonetary = InputField.extend({
* @param {float} value
*/
_formatValue: function (value) {
- if (this.mode === 'readonly') {
- return field_utils.format.monetary(value, this.field, this.nodeOptions);
- } else if (this.mode === 'edit') {
- return this._super.apply(this, arguments);
- }
+ var format = field_utils.format[this.mode === 'edit' ? "float" : "monetary"];
+ return format(value, this.field, this.nodeOptions);
},
});
diff --git a/addons/web/static/test/fields/basic_fields_tests.js b/addons/web/static/test/fields/basic_fields_tests.js
index 77347189728..287134b43a1 100644
--- a/addons/web/static/test/fields/basic_fields_tests.js
+++ b/addons/web/static/test/fields/basic_fields_tests.js
@@ -1333,6 +1333,38 @@ QUnit.module('basic_fields', {
});
+ QUnit.test('monetary field with real monetary field in model', function (assert) {
+ assert.expect(2);
+
+ this.data.partner.fields.qux.type = "monetary";
+
+ var form = createView({
+ View: FormView,
+ model: 'partner',
+ data: this.data,
+ arch:'<form string="Partners">' +
+ '<sheet>' +
+ '<field name="qux"/>' +
+ '<field name="currency_id" invisible="1"/>' +
+ '</sheet>' +
+ '</form>',
+ res_id: 5,
+ session: {
+ currencies: _.indexBy(this.data.currency.records, 'id'),
+ },
+ });
+
+ assert.strictEqual(form.$('.o_form_field_monetary').html(), "$&nbsp;9.10",
+ "readonly value should contain the currency");
+
+ form.$buttons.find('.o_form_button_edit').click();
+
+ assert.strictEqual(form.$('.o_form_field_monetary > input').val(), "9.10",
+ "input value in edition should only contain the value, without the currency");
+
+ form.destroy();
+ });
+
QUnit.module('FieldInteger');
QUnit.test('integer field when unset', function(assert) {