Hi !
I'm building a custom orders view for a Drupal 7 commerce web site, I need to allow users of a specific role to "validate" orders, i.e change the order status from 'Pending' to 'Processing' by clicking a link or checking a box. I tried to accomplish this with a custom module with no succes, now I'm trying to implement this with Rules link but no new field is available in my view. Any suggestion would be appreciated.
Here's the view :

$view = new view();
$view->name = 'restauorders';
$view->description = 'Display a list of orders for the store admin.';
$view->tag = 'commerce';
$view->base_table = 'commerce_order';
$view->human_name = 'RestauOrders';
$view->core = 0;
$view->api_version = '3.0';
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */

/* Display: Defaults */
$handler = $view->new_display('default', 'Defaults', 'default');
$handler->display->display_options['title'] = 'Mes commandes';
$handler->display->display_options['use_more_always'] = FALSE;
$handler->display->display_options['use_more_text'] = 'plus';
$handler->display->display_options['access']['type'] = 'php';
$handler->display->display_options['access']['php_access'] = 'global $user;
$user_fields = user_load($user->uid);
$resto=$user_fields->field_restaurant_owned[\'und\'][0][\'target_id\'];
$urlResto=drupal_basename(request_uri());

return $resto==$urlResto;
';
$handler->display->display_options['cache']['type'] = 'none';
$handler->display->display_options['query']['type'] = 'views_query';
$handler->display->display_options['query']['options']['query_comment'] = FALSE;
$handler->display->display_options['exposed_form']['type'] = 'basic';
$handler->display->display_options['exposed_form']['options']['submit_button'] = 'Appliquer';
$handler->display->display_options['exposed_form']['options']['reset_button_label'] = 'Réinitialiser';
$handler->display->display_options['exposed_form']['options']['exposed_sorts_label'] = 'Trier par';
$handler->display->display_options['pager']['type'] = 'full';
$handler->display->display_options['pager']['options']['items_per_page'] = 50;
$handler->display->display_options['pager']['options']['expose']['items_per_page_label'] = 'Éléments par page';
$handler->display->display_options['pager']['options']['expose']['items_per_page_options_all_label'] = '- Tout -';
$handler->display->display_options['pager']['options']['expose']['offset_label'] = 'Décalage';
$handler->display->display_options['pager']['options']['tags']['first'] = '« premier';
$handler->display->display_options['pager']['options']['tags']['previous'] = '‹ précédent';
$handler->display->display_options['pager']['options']['tags']['next'] = 'suivant ›';
$handler->display->display_options['pager']['options']['tags']['last'] = 'dernier »';
$handler->display->display_options['style_plugin'] = 'table';
$handler->display->display_options['style_options']['columns'] = array(
  'order_number' => 'order_number',
  'changed' => 'changed',
  'commerce_customer_address' => 'commerce_customer_address',
  'name' => 'name',
  'commerce_order_total' => 'commerce_order_total',
  'status' => 'status',
  'operations' => 'operations',
  'field_restaurant_order' => 'field_restaurant_order',
);
$handler->display->display_options['style_options']['default'] = 'changed';
$handler->display->display_options['style_options']['info'] = array(
  'order_number' => array(
    'sortable' => 1,
    'default_sort_order' => 'desc',
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
  'changed' => array(
    'sortable' => 1,
    'default_sort_order' => 'desc',
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
  'commerce_customer_address' => array(
    'sortable' => 0,
    'default_sort_order' => 'asc',
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
  'name' => array(
    'sortable' => 1,
    'default_sort_order' => 'asc',
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
  'commerce_order_total' => array(
    'sortable' => 1,
    'default_sort_order' => 'asc',
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
  'status' => array(
    'sortable' => 1,
    'default_sort_order' => 'asc',
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
  'operations' => array(
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
  'field_restaurant_order' => array(
    'sortable' => 1,
    'default_sort_order' => 'asc',
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
);
$handler->display->display_options['style_options']['empty_table'] = TRUE;
/* Entête: Global: PHP */
$handler->display->display_options['header']['php']['id'] = 'php';
$handler->display->display_options['header']['php']['table'] = 'views';
$handler->display->display_options['header']['php']['field'] = 'php';
$handler->display->display_options['header']['php']['php_output'] = '<?php
/*global $user;
$user_fields = user_load($user->uid);
$resto=$user_fields->field_restaurant_owned[\'und\'][0][\'target_id\'];

$urlResto=drupal_basename(request_uri());
echo \'resto du mec=\'.$resto.\'<br/>resto demande=\'.$urlResto;*/
?>
';
/* No results behavior: Commande Drupal Commerce: Texte de page vide */
$handler->display->display_options['empty']['empty_text']['id'] = 'empty_text';
$handler->display->display_options['empty']['empty_text']['table'] = 'commerce_order';
$handler->display->display_options['empty']['empty_text']['field'] = 'empty_text';
$handler->display->display_options['empty']['empty_text']['empty'] = TRUE;
/* Relationship: Commande Drupal Commerce: Propriétaire */
$handler->display->display_options['relationships']['uid']['id'] = 'uid';
$handler->display->display_options['relationships']['uid']['table'] = 'commerce_order';
$handler->display->display_options['relationships']['uid']['field'] = 'uid';
/* Relationship: Commande Drupal Commerce: Profil client référencé */
$handler->display->display_options['relationships']['commerce_customer_billing_profile_id']['id'] = 'commerce_customer_billing_profile_id';
$handler->display->display_options['relationships']['commerce_customer_billing_profile_id']['table'] = 'field_data_commerce_customer_billing';
$handler->display->display_options['relationships']['commerce_customer_billing_profile_id']['field'] = 'commerce_customer_billing_profile_id';
/* Relationship: Commande Drupal Commerce: Transaction de paiement */
$handler->display->display_options['relationships']['payment_transaction']['id'] = 'payment_transaction';
$handler->display->display_options['relationships']['payment_transaction']['table'] = 'commerce_order';
$handler->display->display_options['relationships']['payment_transaction']['field'] = 'payment_transaction';
/* Champ: Commande Drupal Commerce: Numéro de commande */
$handler->display->display_options['fields']['order_number']['id'] = 'order_number';
$handler->display->display_options['fields']['order_number']['table'] = 'commerce_order';
$handler->display->display_options['fields']['order_number']['field'] = 'order_number';
$handler->display->display_options['fields']['order_number']['label'] = 'Numéro';
/* Champ: Commerce Payment Transaction: Mode de paiement */
$handler->display->display_options['fields']['payment_method']['id'] = 'payment_method';
$handler->display->display_options['fields']['payment_method']['table'] = 'commerce_payment_transaction';
$handler->display->display_options['fields']['payment_method']['field'] = 'payment_method';
$handler->display->display_options['fields']['payment_method']['relationship'] = 'payment_transaction';
$handler->display->display_options['fields']['payment_method']['label'] = 'Paiement';
$handler->display->display_options['fields']['payment_method']['exclude'] = TRUE;
$handler->display->display_options['fields']['payment_method']['title'] = 'short_title';
/* Champ: Commande Drupal Commerce: Date de mise à jour */
$handler->display->display_options['fields']['changed']['id'] = 'changed';
$handler->display->display_options['fields']['changed']['table'] = 'commerce_order';
$handler->display->display_options['fields']['changed']['field'] = 'changed';
$handler->display->display_options['fields']['changed']['label'] = 'Date';
$handler->display->display_options['fields']['changed']['date_format'] = 'time ago';
$handler->display->display_options['fields']['changed']['second_date_format'] = 'long';
/* Champ: Profil client Commerce: Adresse */
$handler->display->display_options['fields']['commerce_customer_address']['id'] = 'commerce_customer_address';
$handler->display->display_options['fields']['commerce_customer_address']['table'] = 'field_data_commerce_customer_address';
$handler->display->display_options['fields']['commerce_customer_address']['field'] = 'commerce_customer_address';
$handler->display->display_options['fields']['commerce_customer_address']['relationship'] = 'commerce_customer_billing_profile_id';
$handler->display->display_options['fields']['commerce_customer_address']['label'] = 'Client';
$handler->display->display_options['fields']['commerce_customer_address']['alter']['text'] = '[commerce_customer_address-first_name] [commerce_customer_address-last_name] 
[commerce_customer_address] 
[commerce_customer_address-postal_code] 
[commerce_customer_address-premise]';
$handler->display->display_options['fields']['commerce_customer_address']['empty'] = '-';
$handler->display->display_options['fields']['commerce_customer_address']['hide_alter_empty'] = FALSE;
$handler->display->display_options['fields']['commerce_customer_address']['click_sort_column'] = 'country';
$handler->display->display_options['fields']['commerce_customer_address']['settings'] = array(
  'use_widget_handlers' => 0,
  'format_handlers' => array(
    'address' => 'address',
    'name-oneline' => 'name-oneline',
  ),
);
/* Champ: Utilisateur: Nom */
$handler->display->display_options['fields']['name']['id'] = 'name';
$handler->display->display_options['fields']['name']['table'] = 'users';
$handler->display->display_options['fields']['name']['field'] = 'name';
$handler->display->display_options['fields']['name']['relationship'] = 'uid';
$handler->display->display_options['fields']['name']['label'] = 'User';
$handler->display->display_options['fields']['name']['exclude'] = TRUE;
/* Champ: Commande Drupal Commerce: Line items */
$handler->display->display_options['fields']['commerce_line_items']['id'] = 'commerce_line_items';
$handler->display->display_options['fields']['commerce_line_items']['table'] = 'field_data_commerce_line_items';
$handler->display->display_options['fields']['commerce_line_items']['field'] = 'commerce_line_items';
$handler->display->display_options['fields']['commerce_line_items']['label'] = 'Contenu';
$handler->display->display_options['fields']['commerce_line_items']['settings'] = array(
  'view' => 'commerce_line_item_table|default',
);
$handler->display->display_options['fields']['commerce_line_items']['delta_offset'] = '0';
/* Champ: Commande Drupal Commerce: RestaurantOrder */
$handler->display->display_options['fields']['field_restaurant_order']['id'] = 'field_restaurant_order';
$handler->display->display_options['fields']['field_restaurant_order']['table'] = 'field_data_field_restaurant_order';
$handler->display->display_options['fields']['field_restaurant_order']['field'] = 'field_restaurant_order';
$handler->display->display_options['fields']['field_restaurant_order']['label'] = 'Restaurant';
$handler->display->display_options['fields']['field_restaurant_order']['exclude'] = TRUE;
$handler->display->display_options['fields']['field_restaurant_order']['alter']['text'] = '[field_restaurant_order-target_id] ';
$handler->display->display_options['fields']['field_restaurant_order']['empty'] = 'n/a';
$handler->display->display_options['fields']['field_restaurant_order']['settings'] = array(
  'link' => 0,
);
/* Champ: Commande Drupal Commerce: Order total */
$handler->display->display_options['fields']['commerce_order_total']['id'] = 'commerce_order_total';
$handler->display->display_options['fields']['commerce_order_total']['table'] = 'field_data_commerce_order_total';
$handler->display->display_options['fields']['commerce_order_total']['field'] = 'commerce_order_total';
$handler->display->display_options['fields']['commerce_order_total']['label'] = 'Total';
$handler->display->display_options['fields']['commerce_order_total']['alter']['alter_text'] = TRUE;
$handler->display->display_options['fields']['commerce_order_total']['alter']['text'] = '[commerce_order_total] <br/>[payment_method]';
$handler->display->display_options['fields']['commerce_order_total']['click_sort_column'] = 'amount';
$handler->display->display_options['fields']['commerce_order_total']['settings'] = array(
  'calculation' => FALSE,
);
/* Champ: Commande Drupal Commerce: Statut de la commande */
$handler->display->display_options['fields']['status']['id'] = 'status';
$handler->display->display_options['fields']['status']['table'] = 'commerce_order';
$handler->display->display_options['fields']['status']['field'] = 'status';
$handler->display->display_options['fields']['status']['label'] = 'Statut';
/* Champ: Commande Drupal Commerce: Lien de modification */
$handler->display->display_options['fields']['edit_order']['id'] = 'edit_order';
$handler->display->display_options['fields']['edit_order']['table'] = 'commerce_order';
$handler->display->display_options['fields']['edit_order']['field'] = 'edit_order';
$handler->display->display_options['fields']['edit_order']['label'] = 'Actions';
$handler->display->display_options['fields']['edit_order']['exclude'] = TRUE;
/* Sort criterion: Commande Drupal Commerce: Date de création */
$handler->display->display_options['sorts']['created']['id'] = 'created';
$handler->display->display_options['sorts']['created']['table'] = 'commerce_order';
$handler->display->display_options['sorts']['created']['field'] = 'created';
$handler->display->display_options['sorts']['created']['order'] = 'DESC';
$handler->display->display_options['sorts']['created']['expose']['label'] = 'Date de création';
$handler->display->display_options['sorts']['created']['granularity'] = 'minute';
/* Contextual filter: Commande Drupal Commerce: RestaurantOrder (field_restaurant_order) */
$handler->display->display_options['arguments']['field_restaurant_order_target_id']['id'] = 'field_restaurant_order_target_id';
$handler->display->display_options['arguments']['field_restaurant_order_target_id']['table'] = 'field_data_field_restaurant_order';
$handler->display->display_options['arguments']['field_restaurant_order_target_id']['field'] = 'field_restaurant_order_target_id';
$handler->display->display_options['arguments']['field_restaurant_order_target_id']['default_action'] = 'access denied';
$handler->display->display_options['arguments']['field_restaurant_order_target_id']['exception']['title'] = 'Tout';
$handler->display->display_options['arguments']['field_restaurant_order_target_id']['title_enable'] = TRUE;
$handler->display->display_options['arguments']['field_restaurant_order_target_id']['title'] = 'Commandes %1';
$handler->display->display_options['arguments']['field_restaurant_order_target_id']['default_argument_type'] = 'fixed';
$handler->display->display_options['arguments']['field_restaurant_order_target_id']['summary']['number_of_records'] = '0';
$handler->display->display_options['arguments']['field_restaurant_order_target_id']['summary']['format'] = 'default_summary';
$handler->display->display_options['arguments']['field_restaurant_order_target_id']['summary_options']['items_per_page'] = '25';
$handler->display->display_options['arguments']['field_restaurant_order_target_id']['specify_validation'] = TRUE;
$handler->display->display_options['arguments']['field_restaurant_order_target_id']['validate']['type'] = 'node';
$handler->display->display_options['arguments']['field_restaurant_order_target_id']['validate_options']['types'] = array(
  'restaurant' => 'restaurant',
);
$handler->display->display_options['arguments']['field_restaurant_order_target_id']['validate']['fail'] = 'access denied';
/* Filter criterion: Commande Drupal Commerce: État de la commande */
$handler->display->display_options['filters']['state']['id'] = 'state';
$handler->display->display_options['filters']['state']['table'] = 'commerce_order';
$handler->display->display_options['filters']['state']['field'] = 'state';
$handler->display->display_options['filters']['state']['operator'] = 'not in';
$handler->display->display_options['filters']['state']['value'] = array(
  'cart' => 'cart',
  'checkout' => 'checkout',
);
$handler->display->display_options['filters']['state']['group'] = 1;
$handler->display->display_options['filters']['state']['expose']['label'] = 'Order state';
$handler->display->display_options['filters']['state']['expose']['use_operator'] = TRUE;
$handler->display->display_options['filters']['state']['expose']['operator'] = 'state_op';
$handler->display->display_options['filters']['state']['expose']['identifier'] = 'state';

/* Display: Admin page */
$handler = $view->new_display('page', 'Admin page', 'admin_page');
$handler->display->display_options['defaults']['hide_admin_links'] = FALSE;
$handler->display->display_options['path'] = 'mes-commandes/%';
$handler->display->display_options['menu']['title'] = 'Orders';
$handler->display->display_options['menu']['weight'] = '-10';
$handler->display->display_options['menu']['context'] = 0;
$handler->display->display_options['menu']['context_only_inline'] = 0;
$handler->display->display_options['tab_options']['type'] = 'normal';
$handler->display->display_options['tab_options']['title'] = 'Orders';
$handler->display->display_options['tab_options']['description'] = 'Manage orders in the store.';
$handler->display->display_options['tab_options']['weight'] = '';
$handler->display->display_options['tab_options']['name'] = 'management';
$translatables['restauorders'] = array(
  t('Defaults'),
  t('Mes commandes'),
  t('plus'),
  t('Appliquer'),
  t('Réinitialiser'),
  t('Trier par'),
  t('Asc'),
  t('Desc'),
  t('Éléments par page'),
  t('- Tout -'),
  t('Décalage'),
  t('« premier'),
  t('‹ précédent'),
  t('suivant ›'),
  t('dernier »'),
  t('Auteur de la commande'),
  t('Customer profile referenced by commerce_customer_billing'),
  t('Transaction'),
  t('Numéro'),
  t('Paiement'),
  t('Date'),
  t('Client'),
  t('[commerce_customer_address-first_name] [commerce_customer_address-last_name] 
[commerce_customer_address] 
[commerce_customer_address-postal_code] 
[commerce_customer_address-premise]'),
  t('-'),
  t('User'),
  t('Contenu'),
  t('Restaurant'),
  t('[field_restaurant_order-target_id] '),
  t('n/a'),
  t('Total'),
  t('[commerce_order_total] <br/>[payment_method]'),
  t('Statut'),
  t('Actions'),
  t('Date de création'),
  t('Tout'),
  t('Commandes %1'),
  t('Order state'),
  t('Admin page'),
);