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 = '';
}