You are here

uc_tax.api.php in Ubercart 8.4

Hooks provided by the Tax module.

File

uc_tax/uc_tax.api.php
View source
<?php

/**
 * @file
 * Hooks provided by the Tax module.
 */

/**
 * @addtogroup hooks
 * @{
 */

/**
 * Calculates tax line items for an order.
 *
 * @param mixed $order
 *   An order object or an order id.
 *
 * @return array
 *   An array of tax line item objects keyed by a module-specific id.
 */
function hook_uc_calculate_tax($order) {
  if (!is_object($order)) {
    return [];
  }
  if (empty($order->delivery_postal_code)) {
    $order->delivery_postal_code = $order->billing_postal_code;
  }
  if (empty($order->delivery_zone)) {
    $order->delivery_zone = $order->billing_zone;
  }
  if (empty($order->delivery_country)) {
    $order->delivery_country = $order->billing_country;
  }
  $order->tax = [];
  if ($order
    ->getStatusId()) {
    $use_same_rates = in_array($order
      ->getStateId(), [
      'payment_received',
      'completed',
    ]);
  }
  else {
    $use_same_rates = FALSE;
  }
  foreach (uc_tax_rate_load() as $tax) {
    if ($use_same_rates) {
      foreach ((array) $order->line_items as $old_line) {
        if ($old_line['type'] == 'tax' && $old_line['data']['tax_id'] == $tax->id) {
          $tax->rate = $old_line['data']['tax_rate'];
          break;
        }
      }
    }
    $set = rules_config_load('uc_tax_' . $tax->id);
    if ($set
      ->execute($order)) {
      $line_item = uc_tax_apply_tax($order, $tax);
      if ($line_item) {
        $order->tax[$line_item->id] = $line_item;
      }
    }
  }
  return $order->tax;
}

/**
 * @} End of "addtogroup hooks".
 */

Functions

Namesort descending Description
hook_uc_calculate_tax Calculates tax line items for an order.