diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index 360043ab1a4..2687b82c311 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -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), diff --git a/addons/sale/sale.py b/addons/sale/sale.py index a1ebe31b51e..7d9f52df6b7 100644 --- a/addons/sale/sale.py +++ b/addons/sale/sale.py @@ -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),