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; } /** * Returns an array of variables for use in shipping service components. */ function commerce_shipping_service_component_variables() { return array( 'commerce_order' => array( 'type' => 'commerce_order', 'label' => t('Order'), ), ); }