**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
'stock.inventory.line': (lambda self, cr, uid, ids, c={}: ids, ['product_id'], 20),}),
        'location_name': fields.related('location_id', 'complete_name', type='char', string='Location Name', store={
                                                                                            'stock.location': (_get_location_change, ['name', 'location_id', 'active'], 20),
                                                                                            'stock.inventory.line': (lambda self, cr, uid, ids, c={}: ids, ['location_id'], 20),}),
        'prodlot_name': fields.related('prod_lot_id', 'name', type='char', string='Serial Number Name', store={
                                                                                            'stock.production.lot': (_get_prodlot_change, ['name'], 20),
                                                                                            'stock.inventory.line': (lambda self, cr, uid, ids, c={}: ids, ['prod_lot_id'], 20),}),
    }
    _defaults = {
        'product_qty': 0,
        'product_uom_id': lambda self, cr, uid, ctx=None: self.pool['ir.model.data'].get_object_reference(cr, uid, 'product', 'product_uom_unit')[1]
    }
    def create(self, cr, uid, values, context=None):
        product_obj = self.pool.get('product.product')
        dom = [('product_id', '=', values.get('product_id')), ('inventory_id.state', '=', 'confirm'),
               ('location_id', '=', values.get('location_id')), ('partner_id', '=', values.get('partner_id')),
               ('package_id', '=', values.get('package_id')), ('prod_lot_id', '=', values.get('prod_lot_id'))]
        res = self.search(cr, uid, dom, context=context)
        if res:
            location = self.pool['stock.location'].browse(cr, uid, values.get('location_id'), context=context)
            product = product_obj.browse(cr, uid, values.get('product_id'), context=context)
            raise Warning(_("You cannot have two inventory adjustements in state 'in Progess' with the same product(%s), same location(%s), same package, same owner and same lot. Please first validate the first inventory adjustement with this product before creating another one.") % (product.name, location.name))
        return super(stock_inventory_line, self).create(cr, uid, values, context=context)
    def _get_quants(self, cr, uid, line, context=None):
        quant_obj = self.pool["stock.quant"]
        dom = [('company_id', '=', line.company_id.id), ('location_id', '=', line.location_id.id), ('lot_id', '=', line.prod_lot_id.id),
                        ('product_id','=', line.product_id.id), ('owner_id', '=', line.partner_id.id), ('package_id', '=', line.package_id.id)]
        quants = quant_obj.search(cr, uid, dom, context=context)
        return quants
    def onchange_createline(self, cr, uid, ids, location_id=False, product_id=False, uom_id=False, package_id=False, prod_lot_id=False, partner_id=False, company_id=False, context=None):