<?php /* Copyright 2010-2011 Grégory Soutadé This file is part of KissCount. KissCount is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. KissCount is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with KissCount. If not, see <http://www.gnu.org/licenses/>. */ include "kisscount.php" ; session_start(); ?> <!DOCTYPE HTML SYSTEM> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=UTF-8" /> <link rel="stylesheet" type="text/css" href= "kisscount.css" /> <title>KissCount</title> </head> <body bgcolor="#CCCCCC"> <?php if (isset($_GET["disconnect"])) { $_SESSION = array(); session_destroy(); } if (!isset($_SESSION["user"])) { $display_login = 1; if (isset($_POST["user"])) { if (!IsUserValid($_POST["user"], $_POST["password"])) echo "<center><font color=\"red\"><h3>Invalid password</h3></font></center>\n"; else $display_login = 0; } if ($display_login == 1) { $users = GetUsers(); echo "<center><h1>KissCount</h1><br /><br/>\n"; echo "<form id=\"login\" method=\"post\" action='index.php'>\n"; echo "Login : <select name=\"user\">\n"; foreach($users as $i => $name) echo "<option value=\"$name\">$name</option>\n"; echo "</select><br /><br />\n"; echo "Password : <input type=\"password\" name=\"password\" /><br /><br />\n"; echo "<input type=\"submit\" value=\"Connect\"/>\n"; echo "</form></center>\n"; echo "<br /><br />\n"; echo "<center><a href=\"http://indefero.soutade.fr/p/kisscount\">KissCount</a> © 2010-2011 Grégory Soutadé</center>\n"; die(); } else $_SESSION["user"] = LoadUser($_POST["user"]); } if (!isset($_SESSION["operations"])) { $_SESSION["operations"] = GetAllOperations($_SESSION["user"], $_SESSION["last_year"], $_SESSION["last_month"]); } if (!isset($_POST["year"])) { $_SESSION["cur_year"] = $_SESSION["last_year"]; $_SESSION["cur_month"] = $_SESSION["last_month"]; } else { $_SESSION["cur_year"] = $_POST["year"]; $_SESSION["cur_month"] = $_POST["month"]; } $operations = LoadMonth($_SESSION["user"], $_SESSION["cur_month"], $_SESSION["cur_year"]); $cur_date = mktime(0, 0, 0, date("m") , date("d"), date("Y")); $total_incomes = $total_outcomes = $cur_incomes = $cur_outcomes = 0; $categories = array(); // Statistics foreach($operations as $i => $operation) { if ($operation["meta"] == "1") continue; $date = mktime(0, 0, 0, $operation["month"]+1, $operation["day"]+1, $operation["year"]); $accounts[$operation["account"]]["total"] += $operation["amount"]; if ($date <= $cur_date) $accounts[$operation["account"]]["cur"] += $operation["amount"]; if (!($operation["transfert"] == "" || ($operation["amount"] > 0 && $_SESSION["user"]->IsAccountBlocked($operation["account"])))) continue; if ($operation["transfert"] != "") $operation["amount"] = -$operation["amount"]; if ($operation["amount"] < 0) { $categories[$operation["category"]] -= $operation["amount"]; $total_outcomes -= $operation["amount"]; if ($date <= $cur_date) $cur_outcomes -= $operation["amount"]; } else { $total_incomes += $operation["amount"]; if ($date <= $cur_date) $cur_incomes += $operation["amount"]; } } ?> <script> function changeMonths() { document.getElementById("date_month").innerHTML = ""; switch(document.getElementById("date_year").value) { <?php global $months_strings; foreach($_SESSION["operations"] as $year => $months) { echo "case \"$year\":\n"; $tmp = ""; foreach($months as $i => $month) { $tmp .= "<option value=\\'" . $month . "\\'>" . $months_strings[$month] . "</option>"; } echo "document.getElementById(\"date_month\").innerHTML = '" . $tmp . "'\n"; echo "break\n"; } ?> } } function toggleOperations(parent, operations) { var obj = document.getElementById(operations[0]); var obj2 = document.getElementById(parent); var visibility; if (obj.style.display == "none") { obj2.value = "-"; visibility = "table-row"; } else { obj2.value = "+"; visibility = "none"; } for (var i=0; i<operations.length; i++) { obj = document.getElementById(operations[i]); obj.style.display = visibility; } } </script> <form id="date" method="POST" action="index.php"> <select name="month" id="date_month"> <?php foreach($_SESSION["operations"][$_SESSION["cur_year"]] as $i => $month) { if ($month != $_SESSION["cur_month"]) echo "<option value='" . $month . "'>" . $months_strings[$month] . "</option>\n"; else echo "<option value='" . $month . "' selected>" . $months_strings[$month] . "</option>\n"; } ?> </select> <select name="year" id="date_year" onChange="changeMonths();"> <?php foreach($_SESSION["operations"] as $year => $months) { if ($year != $_SESSION["cur_year"]) echo "<option value='" . $year . "'>" . $year . "</option>\n"; else echo "<option value='" . $year . "' selected>" . $year . "</option>\n"; } ?> </select> <input type="submit" value="OK"/> </form> <a id="disconnect" href="?disconnect=1">Disconnect</a> <br /><br /> <div id="informations"> <div id="accounts"> <table> <tr class="header"><td>Account number</td><td>Account name</td><td>Initial value</td><td>Cur value</td><td>Final value</td></tr> <?php foreach($_SESSION["user"]->accounts as $i => $account) { $val = GetAccountAmount($account["id"], $_SESSION["cur_month"], $_SESSION["cur_year"]); echo "<tr class='bordered'>"; if ($account["shared"] == "1") echo "<td>" . $account["number"] . "*</td>"; else echo "<td>" . $account["number"] . "</td>"; echo "<td>" . $account["name"] . "</td>"; echo "<td align='right'>" . number_format($val, 2) . "</td>"; if (($accounts[$account["id"]]["cur"] + $val) < 0) echo "<td align='right' style=\"font-weight:bold;color:red;\">" . number_format($accounts[$account["id"]]["cur"] + $val, 2) . "</td>" ; else echo "<td align='right' style=\"font-weight:bold;\">" . number_format($accounts[$account["id"]]["cur"] + $val, 2) . "</td>" ; echo "<td align='right'>" . number_format($accounts[$account["id"]]["total"] + $val, 2) . "</td>" ; echo "</tr>\n"; } ?> </table> </div> <br /><br /> <div id="operations"> <table> <tr class="header" bgcolor="#99CCFF"><td/><td>Description</td><td>Date</td><td>Debit</td><td>Credit</td><td>Category</td><td>Account</td></tr> <?php $prev_week=-1; $operations = LoadMonth($_SESSION["user"], $_SESSION["cur_month"], $_SESSION["cur_year"]); foreach($operations as $i => $operation) { $category = $_SESSION["user"]->GetCategory($operation["category"]); if ($operation["fix_cost"] == "0") { $cur_week = date("W", mktime(0, 0, 0, $operation["month"]+1, $operation["day"]+1, $operation["year"])); if ($cur_week > $prev_week) { $tr_class = "class=\"new_week\""; $prev_week = $cur_week; } else $tr_class = ""; } if ($operation["meta"] == "1") echo "<tr $tr_class style='" . $category["style"] . "'><td><input id=\"" . $operation["id"] . "\" type=\"button\" value=\"+\" onClick=\"var ids = " . GetSubOperations($operation["id"]) . " ; toggleOperations(" . $operation["id"] . ", ids);\"/></td><td>" . $operation["description"] . "</td>"; else { if ($operation["parent"] == "") echo "<tr id=\"" . $operation["id"] . "\" $tr_class style='" . $category["style"] . "'><td></td><td>" . $operation["description"] . "</td>"; else echo "<tr id=\"" . $operation["id"] . "\" $tr_class style='" . $category["style"] . ";display:none'><td></td><td> " . $operation["description"] . "</td>"; } echo "<td>" . date("d/m/Y", mktime(0, 0, 0, $operation["month"]+1, $operation["day"]+1, $operation["year"])) . "</td>"; if ($operation["meta"] == "1" && $operation["amount"] == 0) { $amount = MetaPositiveAmount($operation["id"]); echo "<td align='right'>" . number_format($amount, 2) . "</td>"; echo "<td align='right'>" . number_format($amount, 2) . "</td>"; } else { if ($operation["amount"] < 0) echo "<td align='right'>" . number_format(-$operation["amount"], 2) . "</td><td />"; else echo "<td /><td align='right'>" . number_format($operation["amount"], 2) . "</td>"; } if ($operation["meta"] != "1" && $category["id"] > 1) echo "<td>" . $category["name"] . "</td>"; else echo "<td />"; echo "<td>" . $_SESSION["user"]->GetAccountName($operation["account"]) . "</td>"; echo "</tr>\n"; } ?> </table> </div> </div> <div id="stats"> <div id="money_stats"> <table> <tr class="bordered"><td style="font-weight:bold">Cur credit</td><td align="right"><?php echo number_format($cur_incomes, 2) ?></td></tr> <tr class="bordered"><td style="font-weight:bold">Cur debit</td><td align="right"><?php echo number_format($cur_outcomes, 2) ?></td></tr> <tr class="bordered"><td>Total credit</td><td align="right"><?php echo number_format($total_incomes, 2); ?></td></tr> <tr class="bordered"><td>Total debit</td><td align="right"><?php echo number_format($total_outcomes, 2); ?></td></tr> <tr class="bordered"><td style="font-weight:bold">Remains</td> <?php if ($total_outcomes < $total_incomes) echo "<td style=\"text-align:right;font-weight:bold;color:green\">" . number_format($total_incomes - $total_outcomes, 2) . "</td>"; else echo "<td style=\"text-align:right;font-weight:bold;color:red\"> " . number_format($total_incomes - $total_outcomes, 2) . "</td>"; ?> </tr> <tr class="bordered"><td>_</td><td> </td></tr> <?php foreach($_SESSION["user"]->categories as $i => $category) { // Non fix if ($i == 1) { $value = $total_outcomes - $categories[1]; if ($total_outcomes == 0) $percent = 0; else { $percent = ($value * 100) / $total_outcomes; $percent = round($percent, 0); $percent = ($percent < 10) ? "0$percent" : "$percent"; } echo "<tr class=\"bordered\"><td>Non fix</td><td align=\"right\">" . number_format($value, 2) . " ($percent %)</td></tr>\n"; } if ($total_outcomes == 0) $percent = 0; else { $percent = ($categories[$category["id"]] * 100) / $total_outcomes; $percent = round($percent, 0); $percent = ($percent < 10) ? "0$percent" : "$percent"; } echo "<tr class=\"bordered\"><td>" . $category["name"]. "</td><td align=\"right\">" . number_format($categories[$category["id"]], 2) . " ($percent %)</td></tr>\n"; } ?> </table> </div> </div> <br /><br /> <center><a href="http://indefero.soutade.fr/p/kisscount">KissCount</a> © 2010-2011 Grégory Soutadé</center> </body> </html>