[FIX] account,*: fix inconsistent invoice line onchange methods (typos)
[odoo/odoo.git] / addons / account / account_invoice.py
index 32864f9..c777182 100644 (file)
@@ -1488,13 +1488,19 @@ class account_invoice_line(osv.osv):
     #
     # Set the tax field according to the account and the fiscal position
     #
-    def onchange_account_id(self, cr, uid, ids, fposition_id, account_id):
+    def onchange_account_id(self, cr, uid, ids, product_id, partner_id, fposition_id, account_id):
         if not account_id:
             return {}
         taxes = self.pool.get('account.account').browse(cr, uid, account_id).tax_ids
         fpos = fposition_id and self.pool.get('account.fiscal.position').browse(cr, uid, fposition_id) or False
-        res = self.pool.get('account.fiscal.position').map_tax(cr, uid, fpos, taxes)
-        return {'value':{'invoice_line_tax_id': res}}
+        tax_ids = self.pool.get('account.fiscal.position').map_tax(cr, uid, fpos, taxes)
+
+        product_change_result = self.product_id_change(cr, uid, ids, product_id, False,
+                                                       partner_id=partner_id, fposition_id=fposition_id)
+        unique_tax_ids = set(tax_ids)
+        if product_change_result and 'value' in product_change_result and 'invoice_line_tax_id' in product_change_result['value']:
+            unique_tax_ids |= set(product_change_result['value']['invoice_line_tax_id'])
+        return {'value':{'invoice_line_tax_id': list(unique_tax_ids)}}
 
 account_invoice_line()