[FIX] sale, purchase: tax computation

Set the company rounding policy to "Round Globally". Create the
following SO (or PO), with a 7 % excluded tax:
- Qty      Price
- 880.000  5.79
- 120.000  4.36
- 28.000   2.88
- 68.000   11.09
- 35.000   5.20
- 35.000   5.32

The total tax on the SO is 477.48, while it is 477.50 on the invoice
generated from the SO.

FORWARDPORT UP TO 10.0

Fixes #13687
opw-703519
This commit is contained in:
Nicolas Martinelli
2017-01-11 11:45:05 +01:00
parent 2c66f7bc7f
commit 291a94192c
2 changed files with 13 additions and 2 deletions
+6 -1
View File
@@ -22,7 +22,12 @@ class PurchaseOrder(models.Model):
amount_untaxed = amount_tax = 0.0
for line in order.order_line:
amount_untaxed += line.price_subtotal
amount_tax += line.price_tax
# FORWARDPORT UP TO 10.0
if order.company_id.tax_calculation_rounding_method == 'round_globally':
taxes = line.taxes_id.compute_all(line.price_unit, line.order_id.currency_id, line.product_qty, product=line.product_id, partner=line.order_id.partner_id)
amount_tax += sum(t.get('amount', 0.0) for t in taxes.get('taxes', []))
else:
amount_tax += line.price_tax
order.update({
'amount_untaxed': order.currency_id.round(amount_untaxed),
'amount_tax': order.currency_id.round(amount_tax),
+7 -1
View File
@@ -29,7 +29,13 @@ class SaleOrder(models.Model):
amount_untaxed = amount_tax = 0.0
for line in order.order_line:
amount_untaxed += line.price_subtotal
amount_tax += line.price_tax
# FORWARDPORT UP TO 10.0
if order.company_id.tax_calculation_rounding_method == 'round_globally':
price = line.price_unit * (1 - (line.discount or 0.0) / 100.0)
taxes = line.tax_id.compute_all(price, line.order_id.currency_id, line.product_uom_qty, product=line.product_id, partner=line.order_id.partner_id)
amount_tax += sum(t.get('amount', 0.0) for t in taxes.get('taxes', []))
else:
amount_tax += line.price_tax
order.update({
'amount_untaxed': order.pricelist_id.currency_id.round(amount_untaxed),
'amount_tax': order.pricelist_id.currency_id.round(amount_tax),