function income_display_report($vars) { global $t, $db, $config; // get income $beg_tm = $vars['beg_date'] . ' 00:00:00'; $end_tm = $vars['end_date'] . ' 00:00:00'; $res = array(); $where_p = " AND product_id IN (0," . implode(',', $vars['products']) . ") "; switch ($vars['discretion']) { case 'week': $what = $group = 'YEARWEEK(tm_added)'; break; case 'month': $what = $group = "DATE_FORMAT(tm_added, '%Y%m')"; break; case 'day': $what = 'FROM_DAYS(TO_DAYS(tm_added))'; $group = 'TO_DAYS(tm_added)'; } $q = $db->query($s = "SELECT {$what} as date,\n count(payment_id) as added_count, sum(amount) as added_amount\n FROM {$db->config[prefix]}payments p\n WHERE tm_added BETWEEN '{$beg_tm}' AND '{$end_tm}' {$where_p} \n GROUP BY {$group}\n "); while ($x = mysql_fetch_assoc($q)) { switch ($vars['discretion']) { case 'week': $year = substr($x['date'], 0, 4); $weeknum = substr($x['date'], 4, 2); if ($weeknum == 53) { $weeknum = 0; $year++; } $w = date('w', strtotime("{$year}-01-01")); if ($w == 0) { $w = 7; } $weekstartday = $weeknum * 7 - $w; $d = date('Y-m-d', strtotime($year . '-01-01') + $weekstartday * 3600 * 24); break; case 'month': $d1 = substr($x['date'], 0, 4); $d2 = substr($x['date'], 4, 2); $d = "{$d1}-{$d2}-01"; break; case 'day': $d = $x['date']; } $res[$d] = $x; } $what = str_replace('tm_added', 'tm_completed', $what); $group = str_replace('tm_added', 'tm_completed', $group); $q = $db->query($s = "SELECT {$what} as date,\n count(payment_id) as completed_count, sum(amount) as completed_amount\n FROM {$db->config[prefix]}payments p\n WHERE tm_completed BETWEEN '{$beg_tm}' AND '{$end_tm}' {$where_p} \n AND completed>0\n GROUP BY {$group}\n "); $max_total = 0; while ($x = mysql_fetch_assoc($q)) { switch ($vars['discretion']) { case 'week': $year = substr($x['date'], 0, 4); $weeknum = substr($x['date'], 4, 2); if ($weeknum == 53) { $weeknum = 0; $year++; } $w = date('w', strtotime("{$year}-01-01")); if ($w == 0) { $w = 7; } $weekstartday = $weeknum * 7 - $w; $d = date('Y-m-d', strtotime($year . '-01-01') + $weekstartday * 3600 * 24); break; case 'month': $d1 = substr($x['date'], 0, 4); $d2 = substr($x['date'], 4, 2); $d = "{$d1}-{$d2}-01"; break; case 'day': $d = $x['date']; } $res[$d] = array_merge($x, (array) $res[$d]); $total_completed += $x['completed_amount']; if ($x['completed_amount'] > $max_total) { $max_total = $x['completed_amount']; } } ////// /**/ $members = array(); $q = $db->query($s = "SELECT payment_id, member_id, {$what} as date\n FROM {$db->config[prefix]}payments p\n WHERE tm_completed BETWEEN '{$beg_tm}' AND '{$end_tm}' {$where_p} \n AND completed > 0\n\tAND amount > 0\n "); $xx = array(); while ($xxx = mysql_fetch_assoc($q)) { $member_id = $xxx['member_id']; $x_date = $xxx['date']; if (!$members[$member_id]) { $members[$member_id]++; $xx[$x_date]++; } } $xy = array(); foreach ($xx as $date => $paid_count) { $xy[] = array('date' => $date, 'paid_count' => $paid_count); } // print_r ($xy); // while ($x = mysql_fetch_assoc($q)){ while (list(, $x) = each($xy)) { // print_r ($x); switch ($vars['discretion']) { case 'week': $year = substr($x['date'], 0, 4); $weeknum = substr($x['date'], 4, 2); if ($weeknum == 53) { $weeknum = 0; $year++; } $w = date('w', strtotime("{$year}-01-01")); if ($w == 0) { $w = 7; } $weekstartday = $weeknum * 7 - $w; $d = date('Y-m-d', strtotime($year . '-01-01') + $weekstartday * 3600 * 24); break; case 'month': $d1 = substr($x['date'], 0, 4); $d2 = substr($x['date'], 4, 2); $d = "{$d1}-{$d2}-01"; break; case 'day': $d = $x['date']; } $res[$d] = array_merge($x, (array) $res[$d]); } /**/ ////// $res1 = array(); $keys = array_keys($res); $min = @min($keys); $max = @max($keys); list($min, $e) = round_period($min, $min, $vars['discretion']); list($m, $max) = round_period($max, $max, $vars['discretion']); for ($k = $min; $k <= $max; list($k, $e) = next_period($k, $vars['discretion'])) { switch ($vars['discretion']) { case 'week': $dp = strftime($config['date_format'], strtotime($k)) . ' - ' . strftime($config['date_format'], strtotime($e)); break; case 'month': $dp = date("m/Y", strtotime($k)); break; case 'day': $dp = strftime("%a " . $config['date_format'], strtotime($k)); break; } $d = $k; // $res1[$d]['date'] = $d; $totals[0] = 'TOTAL'; $totals[1] += $res[$d]['paid_count']; $totals[2] += $res[$d]['added_count']; $totals[3] += $res[$d]['completed_count']; $totals[4] += $res[$d]['added_amount']; $totals[5] += $res[$d]['completed_amount']; $totals[6] = ''; $res1[$d][0] = $dp; $res1[$d][1] = intval($res[$d]['paid_count']); $res1[$d][2] = intval($res[$d]['added_count']); $res1[$d][3] = intval($res[$d]['completed_count']); $res1[$d][4] = number_format($res[$d]['added_amount'], 2, '.', ','); $res1[$d][5] = number_format($res[$d]['completed_amount'], 2, '.', ','); if ($max_total) { $x = round(100 * $res[$d]['completed_amount'] / $max_total); $p = round(100 * $res[$d]['completed_amount'] / $total_completed); if ($x) { $res1[$d][6] = "\n <table align=left width={$x} cellpadding=0 cellspacing=0 style='font-size: 5pt;' height=6><tr><td bgcolor=red style='background-color: red;'></td></tr></table>\n ({$p}%)\n "; } else { $res1[$d][6] = ''; } } } ksort($res1); $totalacv = $totals[5]; $totals[4] = number_format($totals[4], 2, '.', ','); $totals[5] = number_format($totals[5], 2, '.', ','); ///// DISPLAY RESULT $t->assign('header', array(0 => 'Date', 1 => 'Paid Count', 2 => 'Added Count', 3 => 'Completed Count', 4 => 'Added Amount', 5 => 'Completed Amount', 6 => 'Percent Graph')); $acv = $totals[1] > 0 ? $totalacv / $totals[1] : 0; $acv = round($acv, 3); $t->assign('acv', $acv); $t->assign('title', 'Income Report'); $t->assign('report', $res1); $t->assign('totals', $totals); $t->display('admin/header.inc.html'); $otd = $t->template_dir; $t->template_dir = dirname(__FILE__); $t->display('income_result.inc.html'); $t->template_dir = $otd; $t->display('admin/footer.inc.html'); print "<br /><br /><font size=1>Creation date: " . strftime($config['time_format']) . "</font>"; }
function tax_display_report($vars) { global $t, $db, $config; // get income $beg_tm = $vars['beg_date'] . ' 00:00:00'; $end_tm = $vars['end_date'] . ' 23:59:59'; $res = array(); switch ($vars['discretion']) { case 'week': $what = $group = 'YEARWEEK(tm_completed)'; break; case 'month': $what = $group = "DATE_FORMAT(tm_completed, '%Y%m')"; break; case 'day': $what = 'FROM_DAYS(TO_DAYS(tm_completed))'; $group = 'TO_DAYS(tm_completed)'; } $q = $db->query($s = "SELECT {$what} as date,\n count(payment_id) as completed_count, sum(tax_amount) as completed_amount, sum(amount) as completed_total\n FROM {$db->config[prefix]}payments p\n WHERE tm_completed BETWEEN '{$beg_tm}' AND '{$end_tm}'\n AND completed>0 and tax_amount > 0\n GROUP BY {$group}\n "); $max_total = 0; while ($x = mysql_fetch_assoc($q)) { switch ($vars['discretion']) { case 'week': $year = substr($x['date'], 0, 4); $weeknum = substr($x['date'], 4, 2); if ($weeknum == 53) { $weeknum = 0; $year++; } $w = date('w', strtotime("{$year}-01-01")); $weekstartday = $weeknum * 7 - $w; $d = date('Y-m-d', strtotime($year . '-01-01') + $weekstartday * 3600 * 24); break; case 'month': $d1 = substr($x['date'], 0, 4); $d2 = substr($x['date'], 4, 2); $d = "{$d1}-{$d2}-01"; break; case 'day': $d = $x['date']; } $res[$d] = array_merge($x, (array) $res[$d]); $total_completed += $x['completed_amount']; if ($x['completed_amount'] > $max_total) { $max_total = $x['completed_amount']; } } $res1 = array(); $keys = array_keys($res); if (count($keys) > 0) { $min = @min($keys); $max = @max($keys); } else { $min = 0; $max = 0; } list($min, $e) = round_period($min, $min, $vars['discretion']); list($m, $max) = round_period($max, $max, $vars['discretion']); for ($k = $min; $k <= $max; list($k, $e) = next_period($k, $vars['discretion'])) { switch ($vars['discretion']) { case 'week': $dp = strftime($config['date_format'], strtotime($k)) . ' - ' . strftime($config['date_format'], strtotime($e)); break; case 'month': $dp = date("m/Y", strtotime($k)); break; case 'day': $dp = strftime("%a " . $config['date_format'], strtotime($k)); break; } $d = $k; // $res1[$d]['date'] = $d; $totals[0] = 'TOTAL'; $totals[1] += $res[$d]['completed_total']; $totals[2] += $res[$d]['completed_amount']; $res1[$d][0] = $dp; $res1[$d][1] = number_format($res[$d]['completed_total'], 2, '.', ','); $res1[$d][2] = number_format($res[$d]['completed_amount'], 2, '.', ','); } ksort($res1); $totals[1] = number_format($totals[1], 2, '.', ','); $totals[2] = number_format($totals[2], 2, '.', ','); ///// DISPLAY RESULT $t->assign('header', array(0 => 'Date', 1 => 'Total Amount', 2 => 'Tax Amount')); $t->assign('title', 'Tax Report'); $t->assign('report', $res1); $t->assign('totals', $totals); $t->display('admin/header.inc.html'); $otd = $t->template_dir; $t->template_dir = dirname(__FILE__); $t->display('income_result.inc.html'); $t->template_dir = $otd; $t->display('admin/footer.inc.html'); print "<br><br><font size=1>Creation date: " . strftime($config['time_format']) . "</font>"; }