Impacted versions: 9.0

Steps to reproduce:

* Create an MTO product with 
  * Product Type: Stockable Product
  * Routes: "Buy" and "Make to Order"
* Update Qty on Hand to any quantity (i.e, 2).
* Create a sales order with this product and a number <= to the one in the step before.
* Confirm the sales order.

Current behavior:

The created delivery picking appears in state "Reserved" and the current quantity on stock has been reserved, allowing you to transfer that stock.

Expected behavior:

The created delivery picking should be in "Waiting another operation", or at least in "Waiting availability" until the purchase order is confirmed (if you have defined a supplier for the product and the procurement creates the purchase order), which seems to be the current behavior when there's no stock available (is this also correct, as it allows to manually reserve?).
addons/stock/stock.py
if not default.get('barcode', False):
            default.update({'barcode': default.get('complete_name', False)})
        return super(stock_location, self).create(cr, uid, default, context=context)
    def get_putaway_strategy(self, cr, uid, location, product, context=None):
        ''' Returns the location where the product has to be put, if any compliant putaway strategy is found. Otherwise returns None.'''
        putaway_obj = self.pool.get('product.putaway')
        loc = location
        while loc:
            if loc.putaway_strategy_id:
                res = putaway_obj.putaway_apply(cr, uid, loc.putaway_strategy_id, product, context=context)
                if res:
                    return res
            loc = loc.location_id
    def _default_removal_strategy(self, cr, uid, context=None):
        return 'fifo'
    def get_removal_strategy(self, cr, uid, qty, move, ops=False, context=None):
        ''' Returns the removal strategy to consider for the given move/ops
            :rtype: char
        '''
        product = move.product_id
        location = move.location_id
        if product.categ_id.removal_strategy_id:
            return product.categ_id.removal_strategy_id.method
        loc = location
        while loc:
            if loc.removal_strategy_id:
                return loc.removal_strategy_id.method
            loc = loc.location_id
        return self._default_removal_strategy(cr, uid, context=context)
    def get_warehouse(self, cr, uid, location, context=None):