**Impacted versions:** 8.0

**Steps to reproduce:**
To reproduce it is necessary the fifo configuration in the assignation of quants in moves.

- Create a sale order with two lines of the same product, one of that line with a route that generate moves between warehouse.

<img width="1231" alt="skitch 65" src="https://cloud.githubusercontent.com/assets/11341058/24102907/d575a638-0d53-11e7-922e-a3f034d43e94.png">

The route used has three pull rules:

1. From Stock Warehouse_1 to Virtual Locations/Inter Company Transit
2. From Virtual Locations/Inter Company Transit to Stock Warehouse_2
3. From Stock Warehouse_2 to Customers

<img width="1224" alt="skitch 66" src="https://cloud.githubusercontent.com/assets/11341058/24103147/b7c2bfbc-0d54-11e7-955c-87247a10e0bd.png">

- Confirm the sale order. It must be created three pickings:

<img width="1226" alt="skitch 67" src="https://cloud.githubusercontent.com/assets/11341058/24103498/d90c9b38-0d55-11e7-97ff-f986df8cdd9b.png">

- Transfer first two pickings.

<img width="1230" alt="skitch 70" src="https://cloud.githubusercontent.com/assets/11341058/24104496/b7b0be8a-0d58-11e7-89a2-4331fceec1d8.png">

- Before transfer third picking, review that one move has reserved the quant correctly because was reserved from the previous pickings.

<img width="1215" alt="skitch 68" src="https://cloud.githubusercontent.com/assets/11341058/24103908/23952cc8-0d57-11e7-9346-bd48d7edb54a.png">

**Current behavior:**

When check availability of this third picking, the quant already reserved is moved to the other move.

<img width="1264" alt="skitch 69" src="https://cloud.githubusercontent.com/assets/11341058/24104056/8be11616-0d57-11e7-8763-a90507315b19.png">
 
**Expected behavior:**

When check availability of this third picking, the moves already reserved must not be altered.


addons/stock/stock.py
'backorder_id': fields.related('picking_id', 'backorder_id', type='many2one', relation="stock.picking", string="Back Order of", select=True),
        'origin': fields.char("Source"),
        'procure_method': fields.selection([('make_to_stock', 'Default: Take From Stock'), ('make_to_order', 'Advanced: Apply Procurement Rules')], 'Supply Method', required=True, 
                                           help="""By default, the system will take from the stock in the source location and passively wait for availability. The other possibility allows you to directly create a procurement on the source location (and thus ignore its current stock) to gather products. If we want to chain moves and have this one to wait for the previous, this second option should be chosen."""),
        
        'scrapped': fields.related('location_dest_id', 'scrap_location', type='boolean', relation='stock.location', string='Scrapped', readonly=True),
        'quant_ids': fields.many2many('stock.quant', 'stock_quant_move_rel', 'move_id', 'quant_id', 'Moved Quants', copy=False),
        'reserved_quant_ids': fields.one2many('stock.quant', 'reservation_id', 'Reserved quants'),
        'linked_move_operation_ids': fields.one2many('stock.move.operation.link', 'move_id', string='Linked Operations', readonly=True, help='Operations that impact this move for the computation of the remaining quantities'),
        'remaining_qty': fields.function(_get_remaining_qty, type='float', string='Remaining Quantity', digits=0,
                                         states={'done': [('readonly', True)]}, help="Remaining Quantity in default UoM according to operations matched with this move"),
        'procurement_id': fields.many2one('procurement.order', 'Procurement'),
        'group_id': fields.many2one('procurement.group', 'Procurement Group'),
        'rule_id': fields.many2one('procurement.rule', 'Procurement Rule', help='The pull rule that created this stock move'),
        'push_rule_id': fields.many2one('stock.location.path', 'Push Rule', help='The push rule that created this stock move'),
        'propagate': fields.boolean('Propagate cancel and split', help='If checked, when this move is cancelled, cancel the linked move too'),
        'picking_type_id': fields.many2one('stock.picking.type', 'Picking Type'),
        'inventory_id': fields.many2one('stock.inventory', 'Inventory'),
        'lot_ids': fields.function(_get_lot_ids, type='many2many', relation='stock.production.lot', string='Lots'),
        'origin_returned_move_id': fields.many2one('stock.move', 'Origin return move', help='move that created the return move', copy=False),
        'returned_move_ids': fields.one2many('stock.move', 'origin_returned_move_id', 'All returned moves', help='Optional: all returned moves created from this move'),
        'reserved_availability': fields.function(_get_reserved_availability, type='float', string='Quantity Reserved', readonly=True, help='Quantity that has already been reserved for this move'),
        'availability': fields.function(_get_product_availability, type='float', string='Quantity Available', readonly=True, help='Quantity in stock that can still be reserved for this move'),
        'string_availability_info': fields.function(_get_string_qty_information, type='text', string='Availability', readonly=True, help='Show various information on stock availability for this move'),
        'restrict_lot_id': fields.many2one('stock.production.lot', 'Lot', help="Technical field used to depict a restriction on the lot of quants to consider when marking this move as 'done'"),
        'restrict_partner_id': fields.many2one('res.partner', 'Owner ', help="Technical field used to depict a restriction on the ownership of quants to consider when marking this move as 'done'"),
        'route_ids': fields.many2many('stock.location.route', 'stock_location_route_move', 'move_id', 'route_id', 'Destination route', help="Preferred route to be followed by the procurement order"),
        'warehouse_id': fields.many2one('stock.warehouse', 'Warehouse', help="Technical field depicting the warehouse to consider for the route selection on the next procurement (if any)."),
    }
    def _default_location_destination(self, cr, uid, context=None):