diff --git a/addons/account/account_invoice.py b/addons/account/account_invoice.py index e100e174498..e445e3f7bc8 100644 --- a/addons/account/account_invoice.py +++ b/addons/account/account_invoice.py @@ -1353,6 +1353,17 @@ class account_invoice_line(osv.osv): taxes = res.supplier_taxes_id and res.supplier_taxes_id or (a and self.pool.get('account.account').browse(cr, uid, a, context=context).tax_ids or False) tax_id = fpos_obj.map_tax(cr, uid, fpos, taxes) + if type in ('in_invoice','in_refund') and tax_id and price_unit: + tax_pool = self.pool.get('account.tax') + tax_browse = tax_pool.browse(cr, uid, tax_id) + if not isinstance(tax_browse, list): + tax_browse = [tax_browse] + taxes = tax_pool.compute_inv(cr, uid, tax_browse, price_unit, 1) + tax_amount = reduce(lambda total, tax_dict: total + tax_dict.get('amount', 0.0), taxes, 0.0) + price_unit = price_unit - tax_amount + if qty != 0: + price_unit = price_unit / float(qty) + if type in ('in_invoice', 'in_refund'): result.update( {'price_unit': price_unit or res.standard_price,'invoice_line_tax_id': tax_id} ) else: