changeset 55f0e73c3b8d in sao:default
details: https://hg.tryton.org/sao?cmd=changeset;node=55f0e73c3b8d
description:
        Always round numbers after factor operation

        issue8668
        review282251003
diffstat:

 src/model.js     |  19 ++++++-------------
 src/view/form.js |   6 ++++++
 2 files changed, 12 insertions(+), 13 deletions(-)

diffs (52 lines):

diff -r 1f3945c989cd -r 55f0e73c3b8d src/model.js
--- a/src/model.js      Thu Oct 24 19:10:36 2019 +0200
+++ b/src/model.js      Thu Oct 24 19:14:23 2019 +0200
@@ -1819,6 +1819,12 @@
         apply_factor: function(record, value, factor) {
             if (value !== null) {
                 value /= factor;
+                var digits = this.digits(record);
+                if (digits) {
+                    // Round to avoid float precision error
+                    // after the division by factor
+                    value = this.convert(value.toFixed(digits[1]));
+                }
             }
             return value;
         },
@@ -1861,19 +1867,6 @@
             }
             return value;
         },
-        apply_factor: function(record, value, factor) {
-            value = Sao.field.Numeric._super.apply_factor(record, value, 
factor);
-            if (value !== null) {
-                var digits = this.digits(record);
-                if (digits) {
-                    // Round to avoid float precision error
-                    // after the division by factor
-                    value = value.toFixed(digits[1]);
-                }
-                value = new Sao.Decimal(value);
-            }
-            return value;
-        }
     });
 
     Sao.field.Integer = Sao.class_(Sao.field.Float, {
diff -r 1f3945c989cd -r 55f0e73c3b8d src/view/form.js
--- a/src/view/form.js  Thu Oct 24 19:10:36 2019 +0200
+++ b/src/view/form.js  Thu Oct 24 19:14:23 2019 +0200
@@ -1627,6 +1627,12 @@
                 value = field.get(this.record);
                 if (value !== null) {
                     value *= this.factor;
+                    var digits = field.digits(this.record, this.factor);
+                    if (digits) {
+                        // Round to avoid float precision error
+                        // after the multiplication
+                        value = value.toFixed(digits[1]);
+                    }
                 } else {
                     value = '';
                 }

Reply via email to