You are here

function commerce_avatax_delete_avatax_line_items in Drupal Commerce Connector for AvaTax 7.3

Same name and namespace in other branches
  1. 7.4 commerce_avatax.rules.inc \commerce_avatax_delete_avatax_line_items()

Deletes all AvaTax line items on an order.

Parameters

$order: The order object to delete the avatax line items from.

2 calls to commerce_avatax_delete_avatax_line_items()
commerce_avatax_calculate_sales_tax in ./commerce_avatax.module
Calculate sales tax using regular web site checkout.
commerce_avatax_commerce_order_update in ./commerce_avatax.module
Implements hook_commerce_order_update().

File

./commerce_avatax.module, line 428
Calculate Sales Tax using AvaTax Calc service from Avalara, Inc.

Code

function commerce_avatax_delete_avatax_line_items($order) {
  $order_wrapper = entity_metadata_wrapper('commerce_order', $order);

  // When deleting more than one line item, metadata_wrapper will give problems
  // if deleting while looping through the line items. So first remove from order
  // and then delete the line items.
  $line_item_ids = array();
  foreach ($order_wrapper->commerce_line_items as $delta => $line_item_wrapper) {

    // If this line item is an avatax saas line item...
    if ($line_item_wrapper->type
      ->value() == 'avatax') {

      // Store its ID for later deletion and remove the reference from the line
      // item reference field.
      $line_item_ids[] = $line_item_wrapper->line_item_id
        ->value();
      $order_wrapper->commerce_line_items
        ->offsetUnset($delta);
    }
  }

  // If we found any avatax line items...
  if (!empty($line_item_ids)) {

    // First save the order to update the line item reference field value.
    commerce_order_save($order);

    // Then delete the line items.
    commerce_line_item_delete_multiple($line_item_ids);
  }
}