Impacted versions:
9.0

Steps to reproduce:
- Create a product with costing method set to average
- Create a purchase order for the product in a foreign currency, and validate
- Change the exchange rate for the currency in question
- Receive the product

Current behavior:
- Stock quants get the correct cost behind the scene (PO value at current rate)
- Accounting journals get the correct value
- Stock move price unit has been updated to the correct value
- **Average cost on product file is the PO value at old rate**

Expected behavior:
- Average should have been updated in line with the new rate

Video/Screenshot link (optional):

quant_cost_qty = {}
        for quant in quants:
            if quant_cost_qty.get(quant.cost):
                quant_cost_qty[quant.cost] += quant.qty
            else:
                quant_cost_qty[quant.cost] = quant.qty
        move_obj = self.pool.get('account.move')
        for cost, qty in quant_cost_qty.items():
            move_lines = self._prepare_account_move_line(cr, uid, move, qty, cost, credit_account_id, debit_account_id, context=context)
            date = context.get('force_period_date', fields.date.context_today(self, cr, uid, context=context))
            new_move = move_obj.create(cr, uid, {'journal_id': journal_id,
                                      'line_ids': move_lines,
                                      'date': date,
                                      'ref': move.picking_id.name}, context=context)
            move_obj.post(cr, uid, [new_move], context=context)
    
    
    
    
    
    
    
    
    
    
    
class stock_move(osv.osv):