'Verify the route of the product based on the warehouse
return True if the product availibility in stock does not need to be verified,
which is the case in MTO, Cross-Dock or Drop-Shipping'

def _check_routing(self):

    is_available = False
    product_routes = (self.route_id or (self.product_id.route_ids + self.product_id.categ_id.total_route_ids))
    wh_mto_route = self.order_id.warehouse_id.mto_pull_id.route_id
    if (wh_mto_route and (wh_mto_route <= product_routes)):
        is_available = True
    else:
        mto_route = False
        try:
            mto_route = self.env['stock.warehouse']._get_mto_route()
        except UserError:
            pass
        if (mto_route and (mto_route in product_routes)):
            is_available = True
    if (not is_available):
        for pull_rule in product_routes.mapped('pull_ids'):
            if ((pull_rule.picking_type_id.sudo().default_location_src_id.usage == 'supplier') and (pull_rule.picking_type_id.sudo().default_location_dest_id.usage == 'customer')):
                is_available = True
                break
    return is_available
