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;
}