'; $html .= ''; $line = array_shift($v); $sums = array(); $html .= sprintf('', $line[0], $line[1], $line[2], $line[3]/*, $line[4], $line[5]*/); foreach ($v as $line) { if (count($line) < 2) continue; $html .= sprintf('', date('Y-M-d', strtotime($line[0])), $line[1], $line[2], _report_number_format($line[3])); $cat = explode(':', $line[1]); if(!isset($sums[$cat[0]])) { $sums[$cat[0]] = 0; } if(!isset($sums['total'])) { $sums['total'] = 0; } $sums[$cat[0]] += $line[3]; $sums['total'] += $line[3]; } $html .= '
%s%s%s%s
%s%s%s%s
Total: ' . _report_number_format($sums['total']) . '
'; unset($sums['total']); arsort($sums); foreach ($sums as $k => $v) $sums[$k] = "['{$k}', $v]"; $values = implode(', ', $sums); $html .= << google.setOnLoadCallback(drawChartExpenses); function drawChartExpenses() { var data = new google.visualization.DataTable(); data.addColumn('string', 'Source'); data.addColumn('number', 'Amount'); data.addRows([{$values}]); var options = {'title':'Expenses by category', 'width':400, 'height':300}; var chart = new google.visualization.PieChart(document.getElementById('expenses-cats-pie')); chart.draw(data, options); } H; return array('html' => $html); } /** * @param string $v * * @return array('html' => string, 'data' => mixed) */ function get_revenues($v, $_months) { $html = '
'; $html .= ''; $line = array_shift($v); $html .= sprintf('', $line[0], $line[1], $line[2], $line[3], $line[4], $line[5], $line[6]); $html .= ''; $sums = array( 'count' => 0, 'total' => 0, 'check' => 0, 'xfer' => 0, 'paypal' => 0, 'cash' => 0 ); foreach ($v as $line) { if (count($line) < 2) continue; $html .= sprintf('', $_months[$line[0]], $line[1], _report_number_format($line[2]), _report_number_format($line[3]), _report_number_format($line[4]), _report_number_format($line[5]), _report_number_format($line[6]), $line[1] > 0 ? _report_number_format($line[2] / $line[1]) : '' ); $sums['count'] += floatval(str_replace(',', '.', $line[1])); $sums['total'] += floatval(str_replace(',', '.', $line[2])); $sums['check'] += floatval(str_replace(',', '.', $line[3])); $sums['xfer'] += floatval(str_replace(',', '.', $line[4])); $sums['paypal'] += floatval(str_replace(',', '.', $line[5])); $sums['cash'] += floatval(str_replace(',', '.', $line[6])); } $html .= ''; $html .= sprintf('', $sums['count'], _report_number_format($sums['total']), _report_number_format($sums['check']), _report_number_format($sums['xfer']), _report_number_format($sums['paypal']), _report_number_format($sums['cash']), $sums['count'] > 0 ? _report_number_format($sums['total'] / $sums['count']) : '' ); $total_revenues = $sums['total']; $html .= '
%s%s %s%s%s%s %saverage
%s%s %s %s %s %s %s %s
Total %s %s %s %s %s %s %s
'; $html .= << google.setOnLoadCallback(drawChart); function drawChart() { var data = new google.visualization.DataTable(); data.addColumn('string', 'Source'); data.addColumn('number', 'Amount'); data.addRows([ ['Paypal', {$sums['paypal']}], ['Bank transfer', {$sums['xfer']}], ['Check', {$sums['check']}], ['Cash', {$sums['cash']}], ]); var options = {'title':'Donations by source', 'width':400, 'height':300}; var chart = new google.visualization.PieChart(document.getElementById('income-pie')); chart.draw(data, options); } S; return array('html' => $html, 'data' => array('total' => $total_revenues)); }