Following code has solved the problem for role based pricing rules
// Phone Orders + Dymamic Pricing
add_filter( 'woocommerce_dynamic_pricing_is_rule_set_valid_for_user', function($result, $condition, $rule_set){
// ajax request from Phone orders?
if ( is_admin() && is_ajax() && $condition['type'] == 'apply_to' ) {
$result = 0;
if ( $condition['args']['applies_to'] == 'everyone' ) {
$result = 1;
} elseif ( $condition['args']['applies_to'] == 'unauthenticated' ) {
if ( !isset($_POST['cart']['customer']['id']) ) {
$result = 1;
}
} elseif ( $condition['args']['applies_to'] == 'authenticated' ) {
if ( isset($_POST['cart']['customer']['id']) ) {
$result = 1;
}
} elseif ( $condition['args']['applies_to'] == 'roles' && isset( $condition['args']['roles'] ) && is_array( $condition['args']['roles'] ) && isset($_POST['cart']['customer']['id']) ) {
$user_id = intval( $_POST['cart']['customer']['id'] );
foreach ( $condition['args']['roles'] as $role ) {
if ( user_can( $user_id, $role ) ) {
$result = 1;
break;
}
}
}
}
return $result;
}, 10, 3 );