[MERGE] forward port of branch 7.0 up to 60ab6f1
authorDenis Ledoux <dle@odoo.com>
Tue, 12 Aug 2014 15:49:12 +0000 (17:49 +0200)
committerDenis Ledoux <dle@odoo.com>
Tue, 12 Aug 2014 15:49:12 +0000 (17:49 +0200)
1  2 
addons/account/account_invoice.py
addons/account_anglo_saxon/invoice.py
addons/web/static/src/js/search.js
addons/web/static/src/js/view_list.js
addons/web_kanban/static/src/js/kanban.js

Simple merge
@@@ -124,31 -119,25 +124,31 @@@ class account_invoice_line(osv.osv)
                          account_prec = decimal_precision.precision_get(cr, uid, 'Account')
                          # calculate and write down the possible price difference between invoice price and product price
                          for line in res:
-                             if a == line['account_id'] and i_line.product_id.id == line['product_id']:
+                             if line.get('invl_id', 0) == i_line.id and a == line['account_id']:
                                  uom = i_line.product_id.uos_id or i_line.product_id.uom_id
 -                                standard_price = self.pool.get('product.uom')._compute_price(cr, uid, uom.id, i_line.product_id.standard_price, i_line.uos_id.id)
 +                                valuation_price_unit = self.pool.get('product.uom')._compute_price(cr, uid, uom.id, i_line.product_id.standard_price, i_line.uos_id.id)
                                  if inv.currency_id.id != company_currency:
                                      standard_price = self.pool.get('res.currency').compute(cr, uid, company_currency, inv.currency_id.id, standard_price, context={'date': inv.date_invoice})
 -                                if standard_price != i_line.price_unit and line['price_unit'] == i_line.price_unit and acc:
 -                                    price_diff = round(i_line.price_unit - standard_price, account_prec)
 -                                    line.update({'price': round(standard_price * line['quantity'], account_prec)})
 +                                if i_line.product_id.cost_method != 'standard' and i_line.purchase_line_id:
 +                                    #for average/fifo/lifo costing method, fetch real cost price from incomming moves
 +                                    stock_move_obj = self.pool.get('stock.move')
 +                                    valuation_stock_move = stock_move_obj.search(cr, uid, [('purchase_line_id', '=', i_line.purchase_line_id.id)], limit=1, context=context)
 +                                    if valuation_stock_move:
 +                                        valuation_price_unit = stock_move_obj.browse(cr, uid, valuation_stock_move[0], context=context).price_unit
 +                                if valuation_price_unit != i_line.price_unit and line['price_unit'] == i_line.price_unit and acc:
 +                                    price_diff = round(i_line.price_unit - valuation_price_unit, account_prec)
 +                                    line.update({'price': round(valuation_price_unit * line['quantity'], account_prec)})
                                      diff_res.append({
 -                                        'type':'src',
 +                                        'type': 'src',
                                          'name': i_line.name[:64],
 -                                        'price_unit':price_diff,
 -                                        'quantity':line['quantity'],
 +                                        'price_unit': price_diff,
 +                                        'quantity': line['quantity'],
                                          'price': round(price_diff * line['quantity'], account_prec),
 -                                        'account_id':acc,
 -                                        'product_id':line['product_id'],
 -                                        'uos_id':line['uos_id'],
 -                                        'account_analytic_id':line['account_analytic_id'],
 -                                        'taxes':line.get('taxes',[]),
 +                                        'account_id': acc,
 +                                        'product_id': line['product_id'],
 +                                        'uos_id': line['uos_id'],
 +                                        'account_analytic_id': line['account_analytic_id'],
 +                                        'taxes': line.get('taxes', []),
                                          })
                          res += diff_res
          return res
Simple merge
Simple merge