Не раз уже вставал вопрос о том, что график статистики на dashboard будет несколько полезнее, если будет выводить не прошлый период, а аналогичный период прошлого года. Косо ли, криво, но данные я вытащить сумел (если код нехорош, не ругайте сильно, пианист играет, как умеет).
В файле app/controllers/backend/index.php:
function fn_dashboard_get_graphs_data($time_from, $time_to, $is_day) { $company_condition = fn_get_company_condition('?:orders.company_id');$graphs = array(); $graph_tabs = array(); $time_to = mktime(23, 59, 59, date("n", $time_to), date("j", $time_to), date("Y", $time_to)); $time_from_old = mktime(23, 59, 59, date("n", $time_from), date("j", $time_from), date("Y", $time_from)-1)-86399; $time_to_old = mktime(23, 59, 59, date("n", $time_to), date("j", $time_to), date("Y", $time_to)-1); if (fn_check_view_permissions("sales_reports.view", "GET")) { $graphs['dashboard_statistics_sales_chart'] = array(); $paid_statuses = array('P', 'C'); for ($i = $time_from; $i <= $time_to; $i = $i + ($is_day ? 60*60 : SECONDS_IN_DAY)) { $date = !$is_day ? date("Y, (n-1), j", $i) : date("H", $i); if (empty($graphs['dashboard_statistics_sales_chart'][$date])) { $graphs['dashboard_statistics_sales_chart'][$date] = array( 'cur' => 0, 'prev' => 0, ); } } $sales = db_get_array("SELECT " . "?:orders.timestamp, " . "?:orders.total " . "FROM ?:orders " . "WHERE ?:orders.timestamp BETWEEN ?i AND ?i " . "AND ?:orders.status IN (?a) " . "?p ", $time_from, $time_to, $paid_statuses, $company_condition); foreach ($sales as $sale) { $date = !$is_day ? date("Y, (n-1), j", $sale['timestamp']) : date("H", $sale['timestamp']); $graphs['dashboard_statistics_sales_chart'][$date]['cur'] += $sale['total']; } $sales_prev = db_get_array("SELECT " . "?:orders.timestamp, " . "?:orders.total " . "FROM ?:orders " . "WHERE ?:orders.timestamp BETWEEN ?i AND ?i " . "AND ?:orders.status IN (?a) " . "?p ", $time_from_old, $time_to_old, $paid_statuses, $company_condition); foreach ($sales_prev as $sale) { $date = !$is_day ? date("Y, (n-1), j", $sale['timestamp']) : date("H", $sale['timestamp']); $graphs['dashboard_statistics_sales_chart'][$date]['prev'] += $sale['total']; }
Вроде все выбирает и суммирует как хочется.
А вот график после этого отрисовывать не хочет.
График рисует скрипт в design/backend/templates/views/index/index.tpl
Но у меня не хочет.
Что можно или нужно сделать?