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?).
vals['fresh_record'] = False
        context = context or {}
        res = super(stock_pack_operation, self).write(cr, uid, ids, vals, context=context)
        return res
    def unlink(self, cr, uid, ids, context=None):
        if any([x.state in ('done', 'cancel') for x in self.browse(cr, uid, ids, context=context)]):
            raise UserError(_('You can not delete pack operations of a done picking'))
        return super(stock_pack_operation, self).unlink(cr, uid, ids, context=context)
    def check_tracking(self, cr, uid, ids, context=None):
        """ Checks if serial number is assigned to stock move or not and raise an error if it had to.
        """
        operations = self.browse(cr, uid, ids, context=context)
        for ops in operations:
            if ops.picking_id and (ops.picking_id.picking_type_id.use_existing_lots or ops.picking_id.picking_type_id.use_create_lots) and \
                ops.product_id and ops.product_id.tracking != 'none' and ops.qty_done > 0.0:
                if not ops.pack_lot_ids:
                    raise UserError(_('You need to provide a Lot/Serial Number for product %s') % ops.product_id.name)
                if ops.product_id.tracking == 'serial':
                    for opslot in ops.pack_lot_ids:
                        if opslot.qty not in (1.0, 0.0):
                            raise UserError(_('You should provide a different serial number for each piece'))
    def save(self, cr, uid, ids, context=None):
        for pack in self.browse(cr, uid, ids, context=context):
            if pack.product_id.tracking != 'none':
                qty_done = sum([x.qty for x in pack.pack_lot_ids])
                self.pool['stock.pack.operation'].write(cr, uid, [pack.id], {'qty_done': qty_done}, context=context)
        return {'type': 'ir.actions.act_window_close'}
    def split_lot(self, cr, uid, ids, context=None):