diff --git a/sale_triple_discount/models/sale_order_line.py b/sale_triple_discount/models/sale_order_line.py index a23b3e3d2cf5..cb41d46f9f24 100644 --- a/sale_triple_discount/models/sale_order_line.py +++ b/sale_triple_discount/models/sale_order_line.py @@ -103,6 +103,9 @@ def triple_discount_preprocess(self): Updating the cache provides consistency through re-computations.""" prev_values = dict() self.invalidate_cache(fnames=self._discount_fields(), ids=self.ids) + digits = self._fields["discount"]._digits + self.env["sale.order.line"]._fields["discount"]._digits = (16, 16) + prev_values["discount_digits"] = digits for line in self: prev_values[line] = { fname: line[fname] for fname in self._discount_fields() @@ -122,6 +125,8 @@ def triple_discount_postprocess(self, prev_values): fnames=self._discount_fields(), ids=[line.id for line in list(prev_values.keys())], ) + digits = prev_values.pop("discount_digits") + self.env["sale.order.line"]._fields["discount"]._digits = digits for line, prev_vals_dict in list(prev_values.items()): line.update(prev_vals_dict) diff --git a/sale_triple_discount/tests/test_sale_triple_discount.py b/sale_triple_discount/tests/test_sale_triple_discount.py index 069e796cb1e2..199673bbc848 100644 --- a/sale_triple_discount/tests/test_sale_triple_discount.py +++ b/sale_triple_discount/tests/test_sale_triple_discount.py @@ -208,3 +208,11 @@ def test_06_discount_0(self): self.assertAlmostEqual(self.so_line2.price_subtotal, 600.0) self.assertAlmostEqual(self.order.amount_untaxed, 1200.0) self.assertAlmostEqual(self.order.amount_tax, 180.0) + + def test_07_discount_16_digits(self): + self.so_line1.product_uom_qty = 2.0 + self.so_line1.price_unit = 138.0 + self.so_line1.discount = 45.0 + self.so_line1.discount2 = 5.0 + self.so_line1.discount3 = 10.0 + self.assertAlmostEqual(self.so_line1.price_subtotal, 129.79)