You are here

function commerce_reports_geckoboard_sales_daily in Commerce Reporting 7.3

Same name and namespace in other branches
  1. 7.4 modules/geckoboard/commerce_reports_geckoboard.module \commerce_reports_geckoboard_sales_daily()

Geckoboard hook: Daily sales

@todo Just use GROUP BY to get daily/weekly/yearly sales. Not sure on pgsql.

1 string reference to 'commerce_reports_geckoboard_sales_daily'
commerce_reports_geckoboard_geckoboardapi in modules/geckoboard/commerce_reports_geckoboard.module
Implements hook_geckoboard().

File

modules/geckoboard/commerce_reports_geckoboard.module, line 56

Code

function commerce_reports_geckoboard_sales_daily() {
  $basequery = db_select('commerce_line_item', 'li')
    ->fields('li', array(
    'line_item_id',
  ))
    ->condition('li.type', 'product')
    ->condition('o.status', array(
    'pending',
    'processing',
    'completed',
  ));
  $basequery
    ->addExpression('SUM(quantity)', 'quantity');
  $basequery
    ->join('commerce_order', 'o', 'o.order_id = li.order_id');

  // Today
  $today = mktime(0, 0, 0, date('n'), date('j'));
  $query = clone $basequery;
  $query
    ->condition('o.created', $today, '>=');
  $result = $query
    ->execute()
    ->fetchField(1);
  $todayunits = (int) $result;

  // Yesterday
  $yesterday = $today - 86400;
  $query = clone $basequery;
  $query
    ->condition('o.created', $yesterday, '>=')
    ->condition('o.created', $today, '<');
  $result = $query
    ->execute()
    ->fetchField(1);
  $yesterdayunits = (int) $result;
  $yesterday_text = t('@units yesterday', array(
    '@units' => $yesterdayunits,
  ));
  return _commerce_reports_geckoboard_texthelper($todayunits, $yesterday_text);
}