[FIX] sale: taxes on report

- Create a tax using the tax template 'GST + QST for sales'
- Create a SO with the following lines:
  Product 1 100 Units @ 0.1
  Product 2 2000 Units @ 10.334
  Product 3 2000 Units @ 10.334
  Product 4 5000 Units @ 0.1
  Product 5 1500 Units @ 0.1
- The totals are:
  Amount without taxes: 41996.00
  Taxes: 6288.90

When printed, the quotation gives:
  Amount without taxes: 41996.00
  Taxes: 6286.52

This is due to the method `_get_tax_amount_by_group`, which is using
`line.price_reduce` for tax computation. Since it is a Monetary field,
it is automatically rounded to the currency precision, while it should
be rounded with the same precision as `price_unit`.

Introduced in 99743cc4aa

opw-752487
This commit is contained in:
Nicolas Martinelli
2017-07-24 10:47:37 +02:00
parent 45ca8f41d6
commit c4ebea8cb1
+1 -1
View File
@@ -792,7 +792,7 @@ class SaleOrderLine(models.Model):
price_tax = fields.Float(compute='_compute_amount', string='Taxes', readonly=True, store=True)
price_total = fields.Monetary(compute='_compute_amount', string='Total', readonly=True, store=True)
price_reduce = fields.Monetary(compute='_get_price_reduce', string='Price Reduce', readonly=True, store=True)
price_reduce = fields.Float(compute='_get_price_reduce', string='Price Reduce', digits=dp.get_precision('Product Price'), readonly=True, store=True)
tax_id = fields.Many2many('account.tax', string='Taxes', domain=['|', ('active', '=', False), ('active', '=', True)])
price_reduce_taxinc = fields.Monetary(compute='_get_price_reduce_tax', string='Price Reduce Tax inc', readonly=True, store=True)
price_reduce_taxexcl = fields.Monetary(compute='_get_price_reduce_notax', string='Price Reduce Tax excl', readonly=True, store=True)