Impacted versions:
11.0

I don't know if it is an issue, but I think is strange.

`product_qty` is in unit of `product` : https://github.com/odoo/odoo/blob/11.0/addons/stock/models/stock_move.py#L240
`reserved_availability` is in unit of `stock.move` : https://github.com/odoo/odoo/blob/11.0/addons/stock/models/stock_move.py#L295

`move.product_qty - move.reserved_availability` seems to have no sens, no ?

https://github.com/odoo/odoo/blob/11.0/addons/stock/models/stock_move.py#L915
https://github.com/odoo/odoo/blob/11.0/addons/stock/models/stock_move.py#L917
https://github.com/odoo/odoo/blob/11.0/addons/stock/models/stock_move.py#L924

thank for your answer

@jco-odoo 
@alnslang 


addons/stock/tests/test_move.py
def test_mixed_tracking_reservation_2(self):
        """ Send products tracked by lot to a customer. In your stock, there are two tracked and
        mulitple untracked quants. There should be as many move lines as there are quants
        reserved. Edit the reserve move lines to set them to new serial numbers, the reservation
        should stay. Validate and the final quantity in stock should be 0, not negative.
        """
        lot1 = self.env['stock.production.lot'].create({
            'name': 'lot1',
            'product_id': self.product2.id,
        })
        lot2 = self.env['stock.production.lot'].create({
            'name': 'lot2',
            'product_id': self.product2.id,
        })
        self.env['stock.quant']._update_available_quantity(self.product2, self.stock_location, 2)
        self.env['stock.quant']._update_available_quantity(self.product2, self.stock_location, 1, lot_id=lot1)
        self.env['stock.quant']._update_available_quantity(self.product2, self.stock_location, 1, lot_id=lot2)
        self.assertEqual(self.env['stock.quant']._get_available_quantity(self.product2, self.stock_location), 4.0)
        
        move1 = self.env['stock.move'].create({
            'name': 'test_in_1',
            'location_id': self.stock_location.id,
            'location_dest_id': self.customer_location.id,
            'product_id': self.product2.id,
            'product_uom': self.uom_unit.id,
            'product_uom_qty': 4.0,
        })
        move1._action_confirm()
        move1._action_assign()
        self.assertEqual(len(move1.move_line_ids), 4)