Launchpad automatic translations update.
[odoo/odoo.git] / addons / account_anglo_saxon / invoice.py
index 7c1ecba..c37a93b 100644 (file)
 #
 ##############################################################################
 
-from osv import fields, osv
+from osv import osv
 
 class account_invoice_line(osv.osv):
     _inherit = "account.invoice.line"
     
     def move_line_get(self, cr, uid, invoice_id, context=None):
-        res = super(account_invoice_line,self).move_line_get(cr, uid, invoice_id, context)
-        inv = self.pool.get('account.invoice').browse(cr, uid, invoice_id)
+        res = super(account_invoice_line,self).move_line_get(cr, uid, invoice_id, context=context)
+        inv = self.pool.get('account.invoice').browse(cr, uid, invoice_id, context=context)
+        company_currency = inv.company_id.currency_id.id
+        def get_price(cr, uid, inv, company_currency,i_line):
+            cur_obj = self.pool.get('res.currency')
+            if inv.currency_id.id != company_currency:
+                price = cur_obj.compute(cr, uid, company_currency, inv.currency_id.id, i_line.product_id.product_tmpl_id.standard_price * i_line.quantity, context={'date': inv.date_invoice})
+            else:
+                price = i_line.product_id.product_tmpl_id.standard_price * i_line.quantity
+            return price
+
         if inv.type in ('out_invoice','out_refund'):
             for i_line in inv.invoice_line:
                 if i_line.product_id:
@@ -56,7 +65,7 @@ class account_invoice_line(osv.osv):
                             'name': i_line.name[:64],
                             'price_unit':i_line.product_id.product_tmpl_id.standard_price,
                             'quantity':i_line.quantity,
-                            'price':i_line.product_id.product_tmpl_id.standard_price * i_line.quantity,
+                            'price':get_price(cr, uid, inv, company_currency, i_line),
                             'account_id':dacc,
                             'product_id':i_line.product_id.id,
                             'uos_id':i_line.uos_id.id,
@@ -69,7 +78,7 @@ class account_invoice_line(osv.osv):
                             'name': i_line.name[:64],
                             'price_unit':i_line.product_id.product_tmpl_id.standard_price,
                             'quantity':i_line.quantity,
-                            'price': -1 * i_line.product_id.product_tmpl_id.standard_price * i_line.quantity,
+                            'price': -1 * get_price(cr, uid, inv, company_currency, i_line),
                             'account_id':cacc,
                             'product_id':i_line.product_id.id,
                             'uos_id':i_line.uos_id.id,
@@ -127,11 +136,11 @@ class account_invoice_line(osv.osv):
                         res += diff_res
         return res   
     
-    def product_id_change(self, cr, uid, ids, product, uom, qty=0, name='', type='out_invoice', partner_id=False, fposition_id=False, price_unit=False, address_invoice_id=False, context=None):
+    def product_id_change(self, cr, uid, ids, product, uom, qty=0, name='', type='out_invoice', partner_id=False, fposition_id=False, price_unit=False, address_invoice_id=False, currency_id=False, context=None):
         if not product:
-            return super(account_invoice_line, self).product_id_change(cr, uid, ids, product, uom, qty, name, type, partner_id, fposition_id, price_unit, address_invoice_id, context)
+            return super(account_invoice_line, self).product_id_change(cr, uid, ids, product, uom, qty, name, type, partner_id, fposition_id, price_unit, address_invoice_id, currency_id, context)
         else:
-            res = super(account_invoice_line, self).product_id_change(cr, uid, ids, product, uom, qty, name, type, partner_id, fposition_id, price_unit, address_invoice_id, context)
+            res = super(account_invoice_line, self).product_id_change(cr, uid, ids, product, uom, qty, name, type, partner_id, fposition_id, price_unit, address_invoice_id, currency_id, context)
 
         if type in ('in_invoice','in_refund'):
             product_obj = self.pool.get('product.product').browse(cr, uid, product, context=context)
@@ -144,7 +153,7 @@ class account_invoice_line(osv.osv):
                 if not oa:
                     oa = product_obj.categ_id.property_stock_account_output_categ and product_obj.categ_id.property_stock_account_output_categ.id
             if oa:
-                fpos = fposition_id and self.pool.get('account.fiscal.position').browse(cr, uid, fposition_id) or False
+                fpos = fposition_id and self.pool.get('account.fiscal.position').browse(cr, uid, fposition_id, context=context) or False
                 a = self.pool.get('account.fiscal.position').map_account(cr, uid, fpos, oa)
                 res['value'].update({'account_id':a})            
         return res
@@ -157,20 +166,20 @@ class account_invoice(osv.osv):
     def _refund_cleanup_lines(self, cr, uid, lines):
         for line in lines:
             inv_id = line['invoice_id']
-            inv_obj = self.browse(cr,uid,inv_id[0])
+            inv_obj = self.browse(cr, uid, inv_id[0])
             if inv_obj.type == 'in_invoice':
                 if line.get('product_id',False):
-                    product_obj = self.pool.get('product.product').browse(cr,uid,line['product_id'][0])
+                    product_obj = self.pool.get('product.product').browse(cr, uid, line['product_id'][0])
                     oa = product_obj.product_tmpl_id.property_stock_account_output and product_obj.product_tmpl_id.property_stock_account_output.id
                     if not oa:
                         oa = product_obj.categ_id.property_stock_account_output_categ and product_obj.categ_id.property_stock_account_output_categ.id
                     if oa:
                         fpos = inv_obj.fiscal_position or False
                         a = self.pool.get('account.fiscal.position').map_account(cr, uid, fpos, oa)
-                        account_data = self.pool.get('account.account').read(cr,uid,[a],['name'])[0]
+                        account_data = self.pool.get('account.account').read(cr, uid, [a], ['name'])[0]
                         line.update({'account_id': (account_data['id'],account_data['name'])})
         res = super(account_invoice,self)._refund_cleanup_lines(cr, uid, lines)
         return res
     
 account_invoice()
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: