'; $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], number_format(str_replace(',', '.', $line[3]), 2, '.', ',')); $cat = explode(':', $line[1]); $sums[$cat[0]] += $line[3]; $sums['total'] += $line[3]; } $html .= '
%s%s%s%s
%s%s%s%s
Total: ' . number_format(str_replace(',', '.', $sums['total']), 2, '.', ',') . '
'; 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) { $html .= sprintf('', $_months[$line[0]], $line[1], number_format(str_replace(',', '.', $line[2]), 2, '.', ','), number_format(str_replace(',', '.', $line[3]), 2, '.', ','), number_format(str_replace(',', '.', $line[4]), 2, '.', ','), number_format(str_replace(',', '.', $line[5]), 2, '.', ','), number_format(str_replace(',', '.', $line[6]), 2, '.', ','), $line[1] > 0 ? number_format(str_replace(',', '.', $line[2] / $line[1]), 2, '.', ',') : '' ); $sums['count'] += $line[1]; $sums['total'] += $line[2]; $sums['check'] += $line[3]; $sums['xfer'] += $line[4]; $sums['paypal'] += $line[5]; $sums['cash'] += $line[6]; } $html .= ''; $html .= sprintf('', $sums['count'], number_format(str_replace(',', '.', $sums['total']), 2, '.', ','), number_format(str_replace(',', '.', $sums['check']), 2, '.', ','), number_format(str_replace(',', '.', $sums['xfer']), 2, '.', ','), number_format(str_replace(',', '.', $sums['paypal']), 2, '.', ','), number_format(str_replace(',', '.', $sums['cash']), 2, '.', ','), $sums['count'] > 0 ? number_format(str_replace(',', '.', $sums['total'] / $sums['count']), 2, '.', ',') : '' ); $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)); }