You are here

function uc_discounts_admin_report_discount in Ubercart Discounts (Alternative) 7.2

Generate admin report page content of discount usage for discount ID.

Parameters

int $discount_id:

Return value

array Array of page content.

1 string reference to 'uc_discounts_admin_report_discount'
uc_discounts_menu in uc_discounts/uc_discounts.module
Implements hook_menu().

File

uc_discounts/uc_discounts.admin.inc, line 1291
Admin forms and functions for uc_discounts module.

Code

function uc_discounts_admin_report_discount($discount_id) {
  $output = array();

  // Add link to all discount data.
  $output['content']['title'] = array(
    '#markup' => l(t('Report for all discounts.'), 'admin/reports/uc_discounts/all') . '<br /><br />',
  );

  // Add table for discount's data.
  $header = array(
    t('Name'),
    t('Uses'),
    t('Times Applied'),
    t('Discounted Amount'),
    t('Revenue Amount'),
    array(
      'data' => t('Operations'),
      'colspan' => 3,
    ),
  );
  $discount = db_query('SELECT d.*, COUNT(du.discount_use_id) total_use_count,
                            SUM(du.times_applied) total_times_applied, SUM(du.amount) total_amount, SUM(o.order_total) total_revenue
                          FROM {uc_discounts} d
                          LEFT JOIN {uc_discounts_uses} du ON d.discount_id=du.discount_id
                          LEFT JOIN {uc_orders} o ON du.order_id=o.order_id AND o.order_status = "completed" AND o.order_total > 0
                          WHERE d.discount_id = :d_discount_id
                          GROUP BY d.discount_id', array(
    ':d_discount_id' => $discount_id,
  ))
    ->fetchObject();
  $total_use_count = is_numeric($discount->total_use_count) ? $discount->total_use_count : 0;
  $total_times_applied = is_numeric($discount->total_times_applied) ? $discount->total_times_applied : 0;
  $discounts[] = array(
    $discount->name,
    $total_use_count,
    $total_times_applied,
    uc_currency_format($discount->total_amount),
    uc_currency_format($discount->total_revenue),
    l(t('edit'), 'admin/store/uc_discounts/edit/' . $discount->discount_id),
    l(t('copy'), 'admin/store/uc_discounts/copy/' . $discount->discount_id),
    l(t('delete'), 'admin/store/uc_discounts/delete/' . $discount->discount_id),
  );
  $output['content']['table1'] = array(
    '#markup' => theme('table', array(
      'header' => $header,
      'rows' => $discounts,
    )) . '<br /><br />',
  );

  // Add table of discount's usage data.
  $header = array(
    array(
      'data' => t('User'),
      'field' => 'user_id',
    ),
    array(
      'data' => t('Order'),
      'field' => 'order_id',
    ),
    array(
      'data' => t('Code'),
      'field' => 'code',
    ),
    array(
      'data' => t('Times Applied'),
      'field' => 'times_applied',
    ),
    array(
      'data' => t('Amount'),
      'field' => 'amount',
    ),
    array(
      'data' => t('Date'),
      'field' => 'insert_timestamp',
      'sort' => 'asc',
    ),
  );
  $select = db_select('uc_discounts_uses', 'du')
    ->extend('PagerDefault')
    ->limit(50)
    ->extend('TableSort')
    ->orderByHeader($header)
    ->fields('du')
    ->condition('discount_id', $discount_id);
  $select
    ->leftjoin('users', 'u', 'du.user_id=u.uid');
  $select
    ->addExpression('u.uid', 'user_id');
  $select
    ->addExpression('u.name', 'username');
  $select
    ->addExpression('u.mail', 'email');
  $result = $select
    ->execute();
  $rows = array();
  foreach ($result as $use) {
    $user_description = $use->user_id != 0 ? $use->username . ' (' . $use->email . ')' : t('Anonymous');
    $rows[] = array(
      'data' => array(
        $user_description,
        $use->order_id,
        !empty($use->code) ? $use->code : '<' . t('no code') . '>',
        $use->times_applied,
        uc_currency_format($use->amount),
        date('Y-m-d H:i:s', $use->insert_timestamp),
      ),
    );
  }
  if (empty($rows)) {
    $rows[] = array(
      'data' => array(
        'data' => t('No discount data available.'),
        'colspan' => 11,
      ),
    );
  }
  $output['content']['table2'] = array(
    '#markup' => theme('table', array(
      'header' => $header,
      'rows' => $rows,
      'attributes' => array(
        'id' => 'uc_discounts_report',
      ),
    )),
  );
  $output['content']['pager'] = array(
    '#theme' => 'pager',
    '#weight' => 5,
  );
  return $output;
}