You are here

function commerce_shipping_default_rules_configuration in Commerce Shipping 7.2

Same name and namespace in other branches
  1. 7 commerce_shipping.rules_defaults.inc \commerce_shipping_default_rules_configuration()

Implements hook_default_rules_configuration().

File

./commerce_shipping.rules_defaults.inc, line 11
Default rules configurations for Shipping.

Code

function commerce_shipping_default_rules_configuration() {
  $rules = array();

  // When an order's status is updating to "Shopping cart" from any other
  // status, its shipping line items will be deleted. This captures any
  // cart contents change via Add to Cart forms / the Shopping cart Views form.
  // It also happens when the customer cancels out of the checkout form.
  $rule = rules_reaction_rule();
  $rule->label = t('Delete shipping line items on shopping cart updates');
  $rule->active = TRUE;
  $rule
    ->event('commerce_order_update')
    ->condition('data_is', array(
    'data:select' => 'commerce-order:status',
    'op' => '==',
    'value' => 'cart',
  ))
    ->condition(rules_condition('data_is', array(
    'data:select' => 'commerce-order-unchanged:status',
    'op' => '==',
    'value' => 'cart',
  ))
    ->negate())
    ->action('commerce_shipping_delete_shipping_line_items', array(
    'commerce_order:select' => 'commerce-order',
  ));
  $rules['commerce_shipping_cart_update_delete'] = $rule;

  // Loop over every shipping service looking for services requiring a default
  // component.
  foreach (commerce_shipping_services() as $name => $shipping_service) {
    if ($shipping_service['rules_component']) {

      // Create a new rules component.
      $rule = rule(commerce_shipping_service_component_variables());
      $rule->label = t('Rate @title', array(
        '@title' => $shipping_service['title'],
      ));

      // Add the action to rate the current service.
      $rule
        ->action('commerce_shipping_service_rate_order', array(
        'shipping_service_name' => $name,
        'commerce_order:select' => 'commerce-order',
      ));
      $rules['commerce_shipping_service_' . $name] = $rule;
    }
  }

  // Loop over every shipping method and define a rule to collect rates for
  // shipping services assigned to that method.
  foreach (commerce_shipping_methods() as $name => $shipping_method) {

    // Create a new rule.
    $rule = rules_reaction_rule();
    $rule->label = t('Collect rates: @title', array(
      '@title' => $shipping_method['title'],
    ));
    $rule->active = $shipping_method['active'];

    // Add the action to invoke every shipping service's component matching this
    // shipping method.
    $rule
      ->event('commerce_shipping_collect_rates')
      ->action('commerce_shipping_method_collect_rates', array(
      'shipping_method_name' => $name,
      'commerce_order:select' => 'commerce-order',
    ));
    $rules['commerce_shipping_method_' . $name] = $rule;
  }
  return $rules;
}