[FIX] 337263 : Account_tax_include corrected for company currency and its conversion...
authorJay (Open ERP) <jvo@tinyerp.com>
Fri, 20 Mar 2009 14:55:48 +0000 (20:25 +0530)
committerJay (Open ERP) <jvo@tinyerp.com>
Fri, 20 Mar 2009 14:55:48 +0000 (20:25 +0530)
bzr revid: jvo@tinyerp.com-20090320145548-69bga5xssyu8qja0

addons/account_tax_include/invoice_tax_incl.py

index 568948e..e42800d 100644 (file)
@@ -159,7 +159,8 @@ class account_invoice_tax(osv.osv):
         tax_obj = self.pool.get('account.tax')
         cur_obj = self.pool.get('res.currency')
         cur = inv.currency_id
-
+        company_currency = inv.company_id.currency_id.id
+        
         for line in inv.invoice_line:
             data = self.pool.get('account.invoice.line')._amount_line2(cr, uid, [line.id], [], [], context)[line.id]
             for tax in data['data']:
@@ -174,14 +175,14 @@ class account_invoice_tax(osv.osv):
                 if inv.type in ('out_invoice','in_invoice'):
                     val['base_code_id'] = tax['base_code_id']
                     val['tax_code_id'] = tax['tax_code_id']
-                    val['base_amount'] = val['base'] * tax['base_sign']
-                    val['tax_amount'] = val['amount'] * tax['tax_sign']
+                    val['base_amount'] = cur_obj.compute(cr, uid, inv.currency_id.id, company_currency, val['base'] * tax['base_sign'], context={'date': inv.date_invoice or time.strftime('%Y-%m-%d')}, round=False)
+                    val['tax_amount'] = cur_obj.compute(cr, uid, inv.currency_id.id, company_currency, val['amount'] * tax['tax_sign'], context={'date': inv.date_invoice or time.strftime('%Y-%m-%d')}, round=False)
                     val['account_id'] = tax['account_collected_id'] or line.account_id.id
                 else:
                     val['base_code_id'] = tax['ref_base_code_id']
                     val['tax_code_id'] = tax['ref_tax_code_id']
-                    val['base_amount'] = val['base'] * tax['ref_base_sign']
-                    val['tax_amount'] = val['amount'] * tax['ref_tax_sign']
+                    val['base_amount'] = cur_obj.compute(cr, uid, inv.currency_id.id, company_currency, val['base'] * tax['ref_base_sign'], context={'date': inv.date_invoice or time.strftime('%Y-%m-%d')}, round=False)
+                    val['tax_amount'] = cur_obj.compute(cr, uid, inv.currency_id.id, company_currency, val['amount'] * tax['ref_tax_sign'], context={'date': inv.date_invoice or time.strftime('%Y-%m-%d')}, round=False)
                     val['account_id'] = tax['account_paid_id'] or line.account_id.id
 
                 key = (val['tax_code_id'], val['base_code_id'], val['account_id'])
@@ -193,6 +194,11 @@ class account_invoice_tax(osv.osv):
                     tax_grouped[key]['base_amount'] += val['base_amount']
                     tax_grouped[key]['tax_amount'] += val['tax_amount']
 
+        for t in tax_grouped.values():
+            t['amount'] = cur_obj.round(cr, uid, cur, t['amount'])
+            t['base_amount'] = cur_obj.round(cr, uid, cur, t['base_amount'])
+            t['tax_amount'] = cur_obj.round(cr, uid, cur, t['tax_amount'])
+        
         return tax_grouped
 account_invoice_tax()