diff --git a/htdocs/compta/bank/annuel.php b/htdocs/compta/bank/annuel.php
index fc04a6ff987..fc60214cf79 100644
--- a/htdocs/compta/bank/annuel.php
+++ b/htdocs/compta/bank/annuel.php
@@ -53,7 +53,7 @@ llxHeader();
$form = new Form($db);
-// R�cup�re info du compte
+// Get account informations
$acct = new Account($db);
if ($_GET["account"])
{
@@ -127,12 +127,28 @@ print '
';
// Ref
print '| '.$langs->trans("Ref").' | ';
print '';
-print $form->showrefnav($acct,'ref','',1,'ref');
+if ($_GET["account"])
+{
+ print $form->showrefnav($acct,'ref','',1,'ref');
+}
+else
+{
+ print $langs->trans("ALL");
+}
print ' |
';
// Label
print '| '.$langs->trans("Label").' | ';
-print ''.$acct->label.' |
';
+print '';
+if ($_GET["account"])
+{
+ print $acct->label;
+}
+else
+{
+ print $langs->trans("AllAccounts");
+}
+print ' | ';
print '
';
diff --git a/htdocs/compta/bank/graph.php b/htdocs/compta/bank/graph.php
index a7650a6715b..46b00d6fb04 100644
--- a/htdocs/compta/bank/graph.php
+++ b/htdocs/compta/bank/graph.php
@@ -18,11 +18,11 @@
*/
/**
- \file htdocs/compta/bank/graph.php
- \ingroup banque
- \brief Page graph des transactions bancaires
- \version $Id$
-*/
+ \file htdocs/compta/bank/graph.php
+ \ingroup banque
+ \brief Page graph des transactions bancaires
+ \version $Id$
+ */
require("./pre.inc.php");
require_once(DOL_DOCUMENT_ROOT."/lib/bank.lib.php");
@@ -31,7 +31,7 @@ require_once(DOL_DOCUMENT_ROOT."/core/dolgraph.class.php");
$langs->load("banks");
if (!$user->rights->banque->lire)
- accessforbidden();
+accessforbidden();
$account = $_GET["account"];
$mode='standard';
@@ -44,700 +44,713 @@ llxHeader();
$form = new Form($db);
-if ($_GET["account"] || $_GET["ref"])
-{
- // If lib forced
- if (! empty($_GET["lib"])) $conf->global->MAIN_GRAPH_LIBRARY=$_GET["lib"];
-
- $datetime = time();
- $year = dolibarr_print_date($datetime, "%Y");
- $month = dolibarr_print_date($datetime, "%m");
- $day = dolibarr_print_date($datetime, "%d");
- if (! empty($_GET["year"])) $year=sprintf("%04d",$_GET["year"]);
- if (! empty($_GET["month"])) $month=sprintf("%02d",$_GET["month"]);
-
-
- $acct = new Account($db);
- if ($_GET["account"])
- {
- $result=$acct->fetch($_GET["account"]);
- }
- if ($_GET["ref"])
- {
- $result=$acct->fetch(0,$_GET["ref"]);
- $account=$acct->id;
- }
+// If lib forced
+if (! empty($_GET["lib"])) $conf->global->MAIN_GRAPH_LIBRARY=$_GET["lib"];
-
- $result=create_exdir($conf->banque->dir_temp);
- if ($result < 0)
+
+$datetime = time();
+$year = dolibarr_print_date($datetime, "%Y");
+$month = dolibarr_print_date($datetime, "%m");
+$day = dolibarr_print_date($datetime, "%d");
+if (! empty($_GET["year"])) $year=sprintf("%04d",$_GET["year"]);
+if (! empty($_GET["month"])) $month=sprintf("%02d",$_GET["month"]);
+
+
+$acct = new Account($db);
+if ($_GET["account"])
+{
+ $result=$acct->fetch($_GET["account"]);
+}
+if ($_GET["ref"])
+{
+ $result=$acct->fetch(0,$_GET["ref"]);
+ $account=$acct->id;
+}
+
+
+$result=create_exdir($conf->banque->dir_temp);
+if ($result < 0)
+{
+ $langs->load("errors");
+ $error++;
+ $mesg=''.$langs->trans("ErrorFailedToCreateDir").'
';
+}
+else
+{
+ // Definition de $width et $height
+ $width = 768;
+ $height = 200;
+
+ // Calcul de $min et $max
+ $sql = "SELECT min(".$db->pdate("datev")."), max(".$db->pdate("datev").")";
+ $sql.= " FROM ".MAIN_DB_PREFIX."bank";
+ if ($account) $sql.= " WHERE fk_account = ".$account;
+ $resql = $db->query($sql);
+ if ($resql)
{
- $langs->load("errors");
- $error++;
- $mesg=''.$langs->trans("ErrorFailedToCreateDir").'
';
+ $num = $db->num_rows($resql);
+ $row = $db->fetch_row($resql);
+ $min = $row[0];
+ $max = $row[1];
}
else
{
+ dolibarr_print_error($db);
+ }
+ $log="graph.php: min=".$min." max=".$max;
+ dolibarr_syslog($log);
- // Definition de $width et $height
- $width = 768;
- $height = 200;
-
- // Calcul de $min et $max
- $sql = "SELECT min(".$db->pdate("datev")."), max(".$db->pdate("datev").")";
- $sql.= " FROM ".MAIN_DB_PREFIX."bank";
- $sql.= " WHERE fk_account = ".$account;
+
+ // Tableau 1
+
+ if ($mode == 'standard')
+ {
+ // Chargement du tableau $amounts
+ // \todo peut etre optimise en virant les date_format
+ $amounts = array();
+ $sql = "SELECT date_format(datev,'%Y%m%d'), sum(amount)";
+ $sql .= " FROM ".MAIN_DB_PREFIX."bank";
+ $sql .= " WHERE date_format(datev,'%Y%m') = '".$year.$month."'";
+ if ($account) $sql .= " AND fk_account = ".$account;
+ $sql .= " GROUP BY date_format(datev,'%Y%m%d')";
$resql = $db->query($sql);
if ($resql)
{
$num = $db->num_rows($resql);
- $row = $db->fetch_row($resql);
- $min = $row[0];
- $max = $row[1];
+ $i = 0;
+ while ($i < $num)
+ {
+ $row = $db->fetch_row($resql);
+ $amounts[$row[0]] = $row[1];
+ $i++;
+ }
+ $db->free($resql);
}
else
{
dolibarr_print_error($db);
}
- $log="graph.php: min=".$min." max=".$max;
- dolibarr_syslog($log);
-
-
- // Tableau 1
- if ($mode == 'standard')
+ // Calcul de $solde avant le debut du graphe
+ $solde = 0;
+ $sql = "SELECT SUM(amount)";
+ $sql .= " FROM ".MAIN_DB_PREFIX."bank";
+ $sql .= " WHERE datev < '".$year."-".sprintf("%02s",$month)."-01'";
+ if ($account) $sql .= " AND fk_account = ".$account;
+ $resql = $db->query($sql);
+ if ($resql)
{
- // Chargement du tableau $amounts
- // \todo peut etre optimise en virant les date_format
- $amounts = array();
- $sql = "SELECT date_format(datev,'%Y%m%d'), sum(amount)";
- $sql .= " FROM ".MAIN_DB_PREFIX."bank";
- $sql .= " WHERE fk_account = ".$account;
- $sql .= " AND date_format(datev,'%Y%m') = '".$year.$month."'";
- $sql .= " GROUP BY date_format(datev,'%Y%m%d')";
- $resql = $db->query($sql);
- if ($resql)
+ $row = $db->fetch_row($resql);
+ $solde = $row[0];
+ $db->free($resql);
+ }
+ else
+ {
+ dolibarr_print_error($db);
+ }
+
+ // Chargement de labels et datas pour tableau 1
+ $labels = array();
+ $datas = array();
+ $datamin = array();
+
+ $subtotal = 0;
+ $day = dolibarr_mktime(12,0,0,$month,1,$year);
+ $textdate = strftime("%Y%m%d",$day);
+ $xyear = substr($textdate,0,4);
+ $xday = substr($textdate,6,2);
+ $xmonth = substr($textdate,4,2);
+
+ $i = 0;
+ while ($xmonth == $month)
+ {
+ $subtotal = $subtotal + (isset($amounts[$textdate]) ? $amounts[$textdate] : 0);
+ if ($day > time())
{
- $num = $db->num_rows($resql);
- $i = 0;
- while ($i < $num)
- {
- $row = $db->fetch_row($resql);
- $amounts[$row[0]] = $row[1];
- $i++;
- }
- $db->free($resql);
+ $datas[$i] = ''; // Valeur speciale permettant de ne pas tracer le graph
}
else
{
- dolibarr_print_error($db);
+ $datas[$i] = $solde + $subtotal;
}
-
- // Calcul de $solde avant le debut du graphe
- $solde = 0;
- $sql = "SELECT sum(amount)";
- $sql .= " FROM ".MAIN_DB_PREFIX."bank";
- $sql .= " WHERE fk_account = ".$account;
- $sql .= " AND datev < '".$year."-".sprintf("%02s",$month)."-01'";
- $resql = $db->query($sql);
- if ($resql)
- {
- $row = $db->fetch_row($resql);
- $solde = $row[0];
- $db->free($resql);
- }
- else
- {
- dolibarr_print_error($db);
- }
-
- // Chargement de labels et datas pour tableau 1
- $labels = array();
- $datas = array();
- $datamin = array();
-
- $subtotal = 0;
- $day = dolibarr_mktime(12,0,0,$month,1,$year);
+ $datamin[$i] = $acct->min_desired;
+ //$labels[$i] = strftime("%d",$day);
+ $labels[$i] = $xday;
+
+ $day += 86400;
$textdate = strftime("%Y%m%d",$day);
$xyear = substr($textdate,0,4);
$xday = substr($textdate,6,2);
$xmonth = substr($textdate,4,2);
-
- $i = 0;
- while ($xmonth == $month)
- {
- $subtotal = $subtotal + (isset($amounts[$textdate]) ? $amounts[$textdate] : 0);
- if ($day > time())
- {
- $datas[$i] = ''; // Valeur speciale permettant de ne pas tracer le graph
- }
- else
- {
- $datas[$i] = $solde + $subtotal;
- }
- $datamin[$i] = $acct->min_desired;
- //$labels[$i] = strftime("%d",$day);
- $labels[$i] = $xday;
-
- $day += 86400;
- $textdate = strftime("%Y%m%d",$day);
- $xyear = substr($textdate,0,4);
- $xday = substr($textdate,6,2);
- $xmonth = substr($textdate,4,2);
-
- $i++;
- }
- // If we are the first of month, only $datas[0] is defined to an int value, others are defined to ""
- // and this make artichow report a warning.
- //$datas[0]=100; KO
- //$datas[0]=100; $datas[1]=90; OK
- //var_dump($datas);
- //exit;
-
- // Fabrication tableau 1
- $file= $conf->banque->dir_temp."/balance".$account."-".$year.$month.".png";
- $title=$langs->transnoentities("Balance").' - '.$langs->transnoentities("Month").': '.$month.' '.$langs->transnoentities("Year").': '.$year;
- $graph_datas=array();
- foreach($datas as $i => $val)
- {
- if ($acct->min_desired) $graph_datas[$i]=array(isset($labels[$i])?$labels[$i]:'',$datas[$i],$datamin[$i]);
- else $graph_datas[$i]=array(isset($labels[$i])?$labels[$i]:'',$datas[$i]);
- }
-
- $px = new DolGraph();
- $px->SetData($graph_datas);
- if ($acct->min_desired) $px->SetLegend(array($langs->transnoentities("Balance"),$langs->transnoentities("BalanceMinimalDesired")));
- else $px->SetLegend(array($langs->transnoentities("Balance")));
- $px->SetLegendWidthMin(180);
- $px->SetMaxValue($px->GetCeilMaxValue()<0?0:$px->GetCeilMaxValue());
- $px->SetMinValue($px->GetFloorMinValue()>0?0:$px->GetFloorMinValue());
- $px->SetTitle($title);
- $px->SetWidth($width);
- $px->SetHeight($height);
- $px->SetType('lines');
- $px->setBgColor('onglet');
- $px->setBgColorGrid(array(255,255,255));
- $px->SetHorizTickIncrement(1);
- $px->SetPrecisionY(0);
- $px->draw($file);
- unset($graph_datas);
- unset($px);
- unset($datas);
- unset($datamin);
- unset($labels);
- unset($amounts);
- }
-
- // Tableau 2
-
- if ($mode == 'standard')
- {
- // Chargement du tableau $amounts
- // \todo peut etre optimise en virant les date_format
- $amounts = array();
- $sql = "SELECT date_format(datev,'%Y%m%d'), sum(amount)";
- $sql .= " FROM ".MAIN_DB_PREFIX."bank";
- $sql .= " WHERE fk_account = ".$account;
- $sql .= " AND date_format(datev,'%Y') = '".$year."'";
- $sql .= " GROUP BY date_format(datev,'%Y%m%d')";
- $resql = $db->query($sql);
- if ($resql)
- {
- $num = $db->num_rows($resql);
- $i = 0;
- while ($i < $num)
- {
- $row = $db->fetch_row($resql);
- $amounts[$row[0]] = $row[1];
- $i++;
- }
- $db->free($resql);
- }
- else
- {
- dolibarr_print_error($db);
- }
-
- // Calcul de $solde avant le debut du graphe
- $solde = 0;
- $sql = "SELECT sum(amount)";
- $sql .= " FROM ".MAIN_DB_PREFIX."bank";
- $sql .= " WHERE fk_account = ".$account;
- $sql .= " AND datev < '".$year."-01-01'";
- $resql = $db->query($sql);
- if ($resql)
- {
- $row = $db->fetch_row($resql);
- $solde = $row[0];
- $db->free($resql);
- }
- else
- {
- dolibarr_print_error($db);
- }
-
- // Chargement de labels et datas pour tableau 2
- $labels = array();
- $datas = array();
- $datamin = array();
-
- $subtotal = 0;
- $now = time();
- $day = dolibarr_mktime(12,0,0,1,1,$year);
- $textdate = strftime("%Y%m%d",$day);
- $xyear = substr($textdate,0,4);
- $xday = substr($textdate,6,2);
-
- $i = 0;
- while ($xyear == $year && $day <= $datetime)
- {
- $subtotal = $subtotal + (isset($amounts[$textdate]) ? $amounts[$textdate] : 0);
- if ($day > $now)
- {
- $datas[$i] = ''; // Valeur speciale permettant de ne pas tracer le graph
- }
- else
- {
- $datas[$i] = $solde + $subtotal;
- }
- $datamin[$i] = $acct->min_desired;
- if ($xday == '15')
- {
- $labels[$i] = dolibarr_print_date($day,"%b");
- }
- $day += 86400;
- $textdate = strftime("%Y%m%d",$day);
- $xyear = substr($textdate,0,4);
- $xday = substr($textdate,6,2);
- $i++;
- }
-
- // Fabrication tableau 2
- $file= $conf->banque->dir_temp."/balance".$account."-".$year.".png";
- $title=$langs->transnoentities("Balance").' - '.$langs->transnoentities("Year").': '.$year;
- $graph_datas=array();
- foreach($datas as $i => $val)
- {
- if ($acct->min_desired) $graph_datas[$i]=array(isset($labels[$i])?$labels[$i]:'',$datas[$i],$datamin[$i]);
- else $graph_datas[$i]=array(isset($labels[$i])?$labels[$i]:'',$datas[$i]);
- }
- $px = new DolGraph();
- $px->SetData($graph_datas);
- if ($acct->min_desired) $px->SetLegend(array($langs->transnoentities("Balance"),$langs->transnoentities("BalanceMinimalDesired")));
- else $px->SetLegend(array($langs->transnoentities("Balance")));
- $px->SetLegendWidthMin(180);
- $px->SetMaxValue($px->GetCeilMaxValue()<0?0:$px->GetCeilMaxValue());
- $px->SetMinValue($px->GetFloorMinValue()>0?0:$px->GetFloorMinValue());
- $px->SetTitle($title);
- $px->SetWidth($width);
- $px->SetHeight($height);
- $px->SetType('lines');
- $px->setBgColor('onglet');
- $px->setBgColorGrid(array(255,255,255));
- $px->SetHideXGrid(true);
- //$px->SetHorizTickIncrement(30.41); // 30.41 jours/mois en moyenne
- $px->SetPrecisionY(0);
- $px->draw($file);
-
- unset($px);
- unset($graph_datas);
- unset($datas);
- unset($datamin);
- unset($labels);
- unset($amounts);
- }
-
- // Tableau 3 - All time line
-
- if ($mode == 'showalltime')
- {
- // Chargement du tableau $amounts
- // \todo peut etre optimise en virant les date_format
- $amounts = array();
- $sql = "SELECT date_format(datev,'%Y%m%d'), sum(amount)";
- $sql .= " FROM ".MAIN_DB_PREFIX."bank";
- $sql .= " WHERE fk_account = ".$account;
- $sql .= " GROUP BY date_format(datev,'%Y%m%d')";
- $resql = $db->query($sql);
- if ($resql)
- {
- $num = $db->num_rows($resql);
- $i = 0;
-
- while ($i < $num)
- {
- $row = $db->fetch_row($resql);
- $amounts[$row[0]] = $row[1];
- $i++;
- }
- }
- else
- {
- dolibarr_print_error($db);
- }
-
- // Calcul de $solde avant le debut du graphe
- $solde = 0;
-
- // Chargement de labels et datas pour tableau 3
- $labels = array();
- $datas = array();
- $datamin = array();
-
- $subtotal = 0;
-
- $day = $min;
- $textdate=strftime("%Y%m%d",$day);
- //print "x".$textdate;
- $i = 0;
- while ($day <= ($max+86400)) // On va au dela du dernier jour
- {
- $subtotal = $subtotal + (isset($amounts[$textdate]) ? $amounts[$textdate] : 0);
- //print strftime ("%e %d %m %y",$day)." ".$subtotal."\n
";
- if ($day > ($max+86400))
- {
- $datas[$i] = ''; // Valeur speciale permettant de ne pas tracer le graph
- }
- else
- {
- $datas[$i] = '' + $solde + $subtotal;
- }
- $datamin[$i] = $acct->min_desired;
- if (substr($textdate,6,2) == '01' || $i == 0)
- {
- $labels[$i] = substr($textdate,4,2);
- }
-
- $day += 86400;
- $textdate=strftime("%Y%m%d",$day);
- $i++;
- }
-
- // Fabrication tableau 3
- $file= $conf->banque->dir_temp."/balance".$account.".png";
- $title=$langs->transnoentities("Balance")." - ".$langs->transnoentities("AllTime");
- $graph_datas=array();
- foreach($datas as $i => $val)
- {
- if ($acct->min_desired) $graph_datas[$i]=array(isset($labels[$i])?$labels[$i]:'',$datas[$i],$datamin[$i]);
- else $graph_datas[$i]=array(isset($labels[$i])?$labels[$i]:'',$datas[$i]);
- }
- $px = new DolGraph();
- $px->SetData($graph_datas);
- if ($acct->min_desired) $px->SetLegend(array($langs->transnoentities("Balance"),$langs->transnoentities("BalanceMinimalDesired")));
- else $px->SetLegend(array($langs->transnoentities("Balance")));
- $px->SetLegendWidthMin(180);
- $px->SetMaxValue($px->GetCeilMaxValue()<0?0:$px->GetCeilMaxValue());
- $px->SetMinValue($px->GetFloorMinValue()>0?0:$px->GetFloorMinValue());
- $px->SetTitle($title);
- $px->SetWidth($width);
- $px->SetHeight($height);
- $px->SetType('lines');
- $px->setBgColor('onglet');
- $px->setBgColorGrid(array(255,255,255));
- $px->SetPrecisionY(0);
- $px->draw($file);
-
- unset($graph_datas);
- unset($datas);
- unset($datamin);
- unset($labels);
- unset($amounts);
- }
-
- // Tableau 4a - Credit/Debit
-
- if ($mode == 'standard')
- {
- // Chargement du tableau $credits, $debits
- $credits = array();
- $debits = array();
- $sql = "SELECT date_format(datev,'%d'), sum(amount)";
- $sql .= " FROM ".MAIN_DB_PREFIX."bank";
- $sql .= " WHERE fk_account = ".$account;
- $monthnext=$month+1; $yearnext=$year;
- if ($monthnext > 12) { $monthnext=1; $yearnext++; }
- $sql .= " AND datev >= '".$year."-".$month."-01 00:00:00'";
- $sql .= " AND datev < '".$yearnext."-".$monthnext."-01 00:00:00'";
- $sql .= " AND amount > 0";
- $sql .= " GROUP BY date_format(datev,'%d')";
- $resql = $db->query($sql);
- if ($resql)
- {
- $num = $db->num_rows($resql);
- $i = 0;
- while ($i < $num)
- {
- $row = $db->fetch_row($resql);
- $credits[$row[0]] = $row[1];
- $i++;
- }
- $db->free($resql);
- }
- else
- {
- dolibarr_print_error($db);
- }
- $sql = "SELECT date_format(datev,'%d'), sum(amount)";
- $sql .= " FROM ".MAIN_DB_PREFIX."bank";
- $sql .= " WHERE fk_account = ".$account;
- $monthnext=$month+1; $yearnext=$year;
- if ($monthnext > 12) { $monthnext=1; $yearnext++; }
- $sql .= " AND datev >= '".$year."-".$month."-01 00:00:00'";
- $sql .= " AND datev < '".$yearnext."-".$monthnext."-01 00:00:00'";
- $sql .= " AND amount < 0";
- $sql .= " GROUP BY date_format(datev,'%d')";
- $resql = $db->query($sql);
- if ($resql)
- {
- while ($row = $db->fetch_row($resql))
- {
- $debits[$row[0]] = abs($row[1]);
- }
- $db->free($resql);
- }
- else
- {
- dolibarr_print_error($db);
- }
-
-
- // Chargement de labels et data_xxx pour tableau 4 Mouvements
- $labels = array();
- $data_credit = array();
- $data_debit = array();
- for ($i = 0 ; $i < 31 ; $i++)
- {
- $data_credit[$i] = isset($credits[substr("0".($i+1),-2)]) ? $credits[substr("0".($i+1),-2)] : 0;
- $data_debit[$i] = isset($debits[substr("0".($i+1),-2)]) ? $debits[substr("0".($i+1),-2)] : 0;
- $labels[$i] = sprintf("%02d",$i+1);
- $datamin[$i] = $acct->min_desired;
- }
-
- // Fabrication tableau 4a
- $file= $conf->banque->dir_temp."/movement".$account."-".$year.$month.".png";
- $title=$langs->transnoentities("BankMovements").' - '.$langs->transnoentities("Month").': '.$month.' '.$langs->transnoentities("Year").': '.$year;
- $graph_datas=array();
- foreach($data_credit as $i => $val)
- {
- $graph_datas[$i]=array($labels[$i],$data_credit[$i],$data_debit[$i]);
- }
- $px = new DolGraph();
- $px->SetData($graph_datas);
- $px->SetLegend(array($langs->transnoentities("Credit"),$langs->transnoentities("Debit")));
- $px->SetLegendWidthMin(180);
- $px->SetMaxValue($px->GetCeilMaxValue()<0?0:$px->GetCeilMaxValue());
- $px->SetMinValue($px->GetFloorMinValue()>0?0:$px->GetFloorMinValue());
- $px->SetTitle($title);
- $px->SetWidth($width);
- $px->SetHeight($height);
- $px->SetType('bars');
- $px->SetShading(3);
- $px->setBgColor('onglet');
- $px->setBgColorGrid(array(255,255,255));
- $px->SetHorizTickIncrement(1);
- $px->SetPrecisionY(0);
- $px->draw($file);
-
- unset($graph_datas);
- unset($px);
- unset($debits);
- unset($credits);
- }
-
- // Tableau 4b - Credit/Debit
-
- if ($mode == 'standard')
- {
- // Chargement du tableau $credits, $debits
- $credits = array();
- $debits = array();
- $sql = "SELECT date_format(datev,'%m'), sum(amount)";
- $sql .= " FROM ".MAIN_DB_PREFIX."bank";
- $sql .= " WHERE fk_account = ".$account;
- $sql .= " AND datev >= '".$year."-01-01 00:00:00'";
- $sql .= " AND datev <= '".$year."-12-31 23:59:59'";
- $sql .= " AND amount > 0";
- $sql .= " GROUP BY date_format(datev,'%m');";
- $resql = $db->query($sql);
- if ($resql)
- {
- $num = $db->num_rows($resql);
- $i = 0;
- while ($i < $num)
- {
- $row = $db->fetch_row($resql);
- $credits[$row[0]] = $row[1];
- $i++;
- }
- $db->free($resql);
- }
- else
- {
- dolibarr_print_error($db);
- }
- $sql = "SELECT date_format(datev,'%m'), sum(amount)";
- $sql .= " FROM ".MAIN_DB_PREFIX."bank";
- $sql .= " WHERE fk_account = ".$account;
- $sql .= " AND datev >= '".$year."-01-01 00:00:00'";
- $sql .= " AND datev <= '".$year."-12-31 23:59:59'";
- $sql .= " AND amount < 0";
- $sql .= " GROUP BY date_format(datev,'%m');";
- $resql = $db->query($sql);
- if ($resql)
- {
- while ($row = $db->fetch_row($resql))
- {
- $debits[$row[0]] = abs($row[1]);
- }
- $db->free($resql);
- }
- else
- {
- dolibarr_print_error($db);
- }
-
-
- // Chargement de labels et data_xxx pour tableau 4 Mouvements
- $labels = array();
- $data_credit = array();
- $data_debit = array();
- for ($i = 0 ; $i < 12 ; $i++)
- {
- $data_credit[$i] = isset($credits[substr("0".($i+1),-2)]) ? $credits[substr("0".($i+1),-2)] : 0;
- $data_debit[$i] = isset($debits[substr("0".($i+1),-2)]) ? $debits[substr("0".($i+1),-2)] : 0;
- $labels[$i] = dolibarr_print_date(dolibarr_mktime(12,0,0,$i+1,1,2000),"%b");
- $datamin[$i] = $acct->min_desired;
- }
-
- // Fabrication tableau 4b
- $file= $conf->banque->dir_temp."/movement".$account."-".$year.".png";
- $title=$langs->transnoentities("BankMovements").' - '.$langs->transnoentities("Year").': '.$year;
- $graph_datas=array();
- foreach($data_credit as $i => $val)
- {
- $graph_datas[$i]=array($labels[$i],$data_credit[$i],$data_debit[$i]);
- }
- $px = new DolGraph();
- $px->SetData($graph_datas);
- $px->SetLegend(array($langs->transnoentities("Credit"),$langs->transnoentities("Debit")));
- $px->SetLegendWidthMin(180);
- $px->SetMaxValue($px->GetCeilMaxValue()<0?0:$px->GetCeilMaxValue());
- $px->SetMinValue($px->GetFloorMinValue()>0?0:$px->GetFloorMinValue());
- $px->SetTitle($title);
- $px->SetWidth($width);
- $px->SetHeight($height);
- $px->SetType('bars');
- $px->SetShading(3);
- $px->setBgColor('onglet');
- $px->setBgColorGrid(array(255,255,255));
- $px->SetHorizTickIncrement(1);
- $px->SetPrecisionY(0);
- $px->draw($file);
-
- unset($graph_datas);
- unset($px);
- unset($debits);
- unset($credits);
+ $i++;
}
+ // If we are the first of month, only $datas[0] is defined to an int value, others are defined to ""
+ // and this make artichow report a warning.
+ //$datas[0]=100; KO
+ //$datas[0]=100; $datas[1]=90; OK
+ //var_dump($datas);
+ //exit;
+
+ // Fabrication tableau 1
+ $file= $conf->banque->dir_temp."/balance".$account."-".$year.$month.".png";
+ $title=$langs->transnoentities("Balance").' - '.$langs->transnoentities("Month").': '.$month.' '.$langs->transnoentities("Year").': '.$year;
+ $graph_datas=array();
+ foreach($datas as $i => $val)
+ {
+ if ($acct->min_desired) $graph_datas[$i]=array(isset($labels[$i])?$labels[$i]:'',$datas[$i],$datamin[$i]);
+ else $graph_datas[$i]=array(isset($labels[$i])?$labels[$i]:'',$datas[$i]);
+ }
+
+ $px = new DolGraph();
+ $px->SetData($graph_datas);
+ if ($acct->min_desired) $px->SetLegend(array($langs->transnoentities("Balance"),$langs->transnoentities("BalanceMinimalDesired")));
+ else $px->SetLegend(array($langs->transnoentities("Balance")));
+ $px->SetLegendWidthMin(180);
+ $px->SetMaxValue($px->GetCeilMaxValue()<0?0:$px->GetCeilMaxValue());
+ $px->SetMinValue($px->GetFloorMinValue()>0?0:$px->GetFloorMinValue());
+ $px->SetTitle($title);
+ $px->SetWidth($width);
+ $px->SetHeight($height);
+ $px->SetType('lines');
+ $px->setBgColor('onglet');
+ $px->setBgColorGrid(array(255,255,255));
+ $px->SetHorizTickIncrement(1);
+ $px->SetPrecisionY(0);
+ $px->draw($file);
+
+ unset($graph_datas);
+ unset($px);
+ unset($datas);
+ unset($datamin);
+ unset($labels);
+ unset($amounts);
}
-
-
- // Onglets
- $head=bank_prepare_head($acct);
- dolibarr_fiche_head($head,'graph',$langs->trans("FinancialAccount"),0);
- if ($mesg) print $mesg.'
';
-
- print '';
-
- // Ref
- print '| '.$langs->trans("Ref").' | ';
- print '';
- $moreparam='&month='.$month.'&year='.$year.($mode=='showalltime'?'&mode=showalltime':'');
- print $form->showrefnav($acct,'ref','',1,'ref','ref','',$moreparam);
- print ' |
';
-
- // Label
- print '| '.$langs->trans("Label").' | ';
- print ''.$acct->label.' |
';
-
- print '
';
-
- print '
';
-
-
- print '';
+ // Tableau 2
if ($mode == 'standard')
{
- $prevyear=$year;$nextyear=$year;
- $prevmonth=$month-1;$nextmonth=$month+1;
- if ($prevmonth < 1) { $prevmonth=12; $prevyear--; }
- if ($nextmonth > 12) { $nextmonth=1; $nextyear++; }
-
- // For month
- $lien="".img_previous()." ".$langs->trans("Month")." ".img_next()."";
- print '| '.$lien.' |
';
-
- print '';
- $file = "movement".$account."-".$year.$month.".png";
- print ' ';
-
- print ' |
';
- $file = "balance".$account."-".$year.$month.".png";
- print ' ';
- print ' |
';
-
- // For year
- $prevyear=$year-1;$nextyear=$year+1;
- $lien="".img_previous()." ".$langs->trans("Year")." ".img_next()."";
- print '| '.$lien.' |
';
-
- print '';
- $file = "movement".$account."-".$year.".png";
- print ' ';
- print ' |
';
-
- print '';
- $file = "balance".$account."-".$year.".png";
- print ' ';
- print ' |
';
- }
+ // Chargement du tableau $amounts
+ // \todo peut etre optimise en virant les date_format
+ $amounts = array();
+ $sql = "SELECT date_format(datev,'%Y%m%d'), sum(amount)";
+ $sql .= " FROM ".MAIN_DB_PREFIX."bank";
+ $sql .= " WHERE date_format(datev,'%Y') = '".$year."'";
+ if ($account) $sql .= " AND fk_account = ".$account;
+ $sql .= " GROUP BY date_format(datev,'%Y%m%d')";
+ $resql = $db->query($sql);
+ if ($resql)
+ {
+ $num = $db->num_rows($resql);
+ $i = 0;
+ while ($i < $num)
+ {
+ $row = $db->fetch_row($resql);
+ $amounts[$row[0]] = $row[1];
+ $i++;
+ }
+ $db->free($resql);
+ }
+ else
+ {
+ dolibarr_print_error($db);
+ }
+
+ // Calcul de $solde avant le debut du graphe
+ $solde = 0;
+ $sql = "SELECT sum(amount)";
+ $sql .= " FROM ".MAIN_DB_PREFIX."bank";
+ $sql .= " WHERE datev < '".$year."-01-01'";
+ if ($account) $sql .= " AND fk_account = ".$account;
+ $resql = $db->query($sql);
+ if ($resql)
+ {
+ $row = $db->fetch_row($resql);
+ $solde = $row[0];
+ $db->free($resql);
+ }
+ else
+ {
+ dolibarr_print_error($db);
+ }
+
+ // Chargement de labels et datas pour tableau 2
+ $labels = array();
+ $datas = array();
+ $datamin = array();
+
+ $subtotal = 0;
+ $now = time();
+ $day = dolibarr_mktime(12,0,0,1,1,$year);
+ $textdate = strftime("%Y%m%d",$day);
+ $xyear = substr($textdate,0,4);
+ $xday = substr($textdate,6,2);
+
+ $i = 0;
+ while ($xyear == $year && $day <= $datetime)
+ {
+ $subtotal = $subtotal + (isset($amounts[$textdate]) ? $amounts[$textdate] : 0);
+ if ($day > $now)
+ {
+ $datas[$i] = ''; // Valeur speciale permettant de ne pas tracer le graph
+ }
+ else
+ {
+ $datas[$i] = $solde + $subtotal;
+ }
+ $datamin[$i] = $acct->min_desired;
+ if ($xday == '15')
+ {
+ $labels[$i] = dolibarr_print_date($day,"%b");
+ }
+ $day += 86400;
+ $textdate = strftime("%Y%m%d",$day);
+ $xyear = substr($textdate,0,4);
+ $xday = substr($textdate,6,2);
+ $i++;
+ }
+
+ // Fabrication tableau 2
+ $file= $conf->banque->dir_temp."/balance".$account."-".$year.".png";
+ $title=$langs->transnoentities("Balance").' - '.$langs->transnoentities("Year").': '.$year;
+ $graph_datas=array();
+ foreach($datas as $i => $val)
+ {
+ if ($acct->min_desired) $graph_datas[$i]=array(isset($labels[$i])?$labels[$i]:'',$datas[$i],$datamin[$i]);
+ else $graph_datas[$i]=array(isset($labels[$i])?$labels[$i]:'',$datas[$i]);
+ }
+ $px = new DolGraph();
+ $px->SetData($graph_datas);
+ if ($acct->min_desired) $px->SetLegend(array($langs->transnoentities("Balance"),$langs->transnoentities("BalanceMinimalDesired")));
+ else $px->SetLegend(array($langs->transnoentities("Balance")));
+ $px->SetLegendWidthMin(180);
+ $px->SetMaxValue($px->GetCeilMaxValue()<0?0:$px->GetCeilMaxValue());
+ $px->SetMinValue($px->GetFloorMinValue()>0?0:$px->GetFloorMinValue());
+ $px->SetTitle($title);
+ $px->SetWidth($width);
+ $px->SetHeight($height);
+ $px->SetType('lines');
+ $px->setBgColor('onglet');
+ $px->setBgColorGrid(array(255,255,255));
+ $px->SetHideXGrid(true);
+ //$px->SetHorizTickIncrement(30.41); // 30.41 jours/mois en moyenne
+ $px->SetPrecisionY(0);
+ $px->draw($file);
+
+ unset($px);
+ unset($graph_datas);
+ unset($datas);
+ unset($datamin);
+ unset($labels);
+ unset($amounts);
+ }
+
+ // Tableau 3 - All time line
if ($mode == 'showalltime')
{
- print '';
- $file = "balance".$account.".png";
- print ' ';
- print ' |
';
+ // Chargement du tableau $amounts
+ // \todo peut etre optimise en virant les date_format
+ $amounts = array();
+ $sql = "SELECT date_format(datev,'%Y%m%d'), sum(amount)";
+ $sql .= " FROM ".MAIN_DB_PREFIX."bank";
+ if ($account) $sql .= " WHERE fk_account = ".$account;
+ $sql .= " GROUP BY date_format(datev,'%Y%m%d')";
+ $resql = $db->query($sql);
+ if ($resql)
+ {
+ $num = $db->num_rows($resql);
+ $i = 0;
+
+ while ($i < $num)
+ {
+ $row = $db->fetch_row($resql);
+ $amounts[$row[0]] = $row[1];
+ $i++;
+ }
+ }
+ else
+ {
+ dolibarr_print_error($db);
+ }
+
+ // Calcul de $solde avant le debut du graphe
+ $solde = 0;
+
+ // Chargement de labels et datas pour tableau 3
+ $labels = array();
+ $datas = array();
+ $datamin = array();
+
+ $subtotal = 0;
+
+ $day = $min;
+ $textdate=strftime("%Y%m%d",$day);
+ //print "x".$textdate;
+ $i = 0;
+ while ($day <= ($max+86400)) // On va au dela du dernier jour
+ {
+ $subtotal = $subtotal + (isset($amounts[$textdate]) ? $amounts[$textdate] : 0);
+ //print strftime ("%e %d %m %y",$day)." ".$subtotal."\n
";
+ if ($day > ($max+86400))
+ {
+ $datas[$i] = ''; // Valeur speciale permettant de ne pas tracer le graph
+ }
+ else
+ {
+ $datas[$i] = '' + $solde + $subtotal;
+ }
+ $datamin[$i] = $acct->min_desired;
+ if (substr($textdate,6,2) == '01' || $i == 0)
+ {
+ $labels[$i] = substr($textdate,4,2);
+ }
+
+ $day += 86400;
+ $textdate=strftime("%Y%m%d",$day);
+ $i++;
+ }
+
+ // Fabrication tableau 3
+ $file= $conf->banque->dir_temp."/balance".$account.".png";
+ $title=$langs->transnoentities("Balance")." - ".$langs->transnoentities("AllTime");
+ $graph_datas=array();
+ foreach($datas as $i => $val)
+ {
+ if ($acct->min_desired) $graph_datas[$i]=array(isset($labels[$i])?$labels[$i]:'',$datas[$i],$datamin[$i]);
+ else $graph_datas[$i]=array(isset($labels[$i])?$labels[$i]:'',$datas[$i]);
+ }
+ $px = new DolGraph();
+ $px->SetData($graph_datas);
+ if ($acct->min_desired) $px->SetLegend(array($langs->transnoentities("Balance"),$langs->transnoentities("BalanceMinimalDesired")));
+ else $px->SetLegend(array($langs->transnoentities("Balance")));
+ $px->SetLegendWidthMin(180);
+ $px->SetMaxValue($px->GetCeilMaxValue()<0?0:$px->GetCeilMaxValue());
+ $px->SetMinValue($px->GetFloorMinValue()>0?0:$px->GetFloorMinValue());
+ $px->SetTitle($title);
+ $px->SetWidth($width);
+ $px->SetHeight($height);
+ $px->SetType('lines');
+ $px->setBgColor('onglet');
+ $px->setBgColorGrid(array(255,255,255));
+ $px->SetPrecisionY(0);
+ $px->draw($file);
+
+ unset($graph_datas);
+ unset($datas);
+ unset($datamin);
+ unset($labels);
+ unset($amounts);
}
-
- // Switch All time/Not all time
- if ($mode == 'showalltime')
+
+ // Tableau 4a - Credit/Debit
+
+ if ($mode == 'standard')
{
- print ' ';
- print '';
- print $langs->trans("GoBack");
- print '';
- print ' |
';
+ // Chargement du tableau $credits, $debits
+ $credits = array();
+ $debits = array();
+ $sql = "SELECT date_format(datev,'%d'), sum(amount)";
+ $sql .= " FROM ".MAIN_DB_PREFIX."bank";
+ $monthnext=$month+1; $yearnext=$year;
+ if ($monthnext > 12) { $monthnext=1; $yearnext++; }
+ $sql .= " WHERE datev >= '".$year."-".$month."-01 00:00:00'";
+ $sql .= " AND datev < '".$yearnext."-".$monthnext."-01 00:00:00'";
+ $sql .= " AND amount > 0";
+ if ($account) $sql .= " AND fk_account = ".$account;
+ $sql .= " GROUP BY date_format(datev,'%d')";
+ $resql = $db->query($sql);
+ if ($resql)
+ {
+ $num = $db->num_rows($resql);
+ $i = 0;
+ while ($i < $num)
+ {
+ $row = $db->fetch_row($resql);
+ $credits[$row[0]] = $row[1];
+ $i++;
+ }
+ $db->free($resql);
+ }
+ else
+ {
+ dolibarr_print_error($db);
+ }
+ $sql = "SELECT date_format(datev,'%d'), sum(amount)";
+ $sql .= " FROM ".MAIN_DB_PREFIX."bank";
+ $monthnext=$month+1; $yearnext=$year;
+ if ($monthnext > 12) { $monthnext=1; $yearnext++; }
+ $sql .= " WHERE datev >= '".$year."-".$month."-01 00:00:00'";
+ $sql .= " AND datev < '".$yearnext."-".$monthnext."-01 00:00:00'";
+ $sql .= " AND amount < 0";
+ if ($account) $sql .= " AND fk_account = ".$account;
+ $sql .= " GROUP BY date_format(datev,'%d')";
+ $resql = $db->query($sql);
+ if ($resql)
+ {
+ while ($row = $db->fetch_row($resql))
+ {
+ $debits[$row[0]] = abs($row[1]);
+ }
+ $db->free($resql);
+ }
+ else
+ {
+ dolibarr_print_error($db);
+ }
+
+
+ // Chargement de labels et data_xxx pour tableau 4 Mouvements
+ $labels = array();
+ $data_credit = array();
+ $data_debit = array();
+ for ($i = 0 ; $i < 31 ; $i++)
+ {
+ $data_credit[$i] = isset($credits[substr("0".($i+1),-2)]) ? $credits[substr("0".($i+1),-2)] : 0;
+ $data_debit[$i] = isset($debits[substr("0".($i+1),-2)]) ? $debits[substr("0".($i+1),-2)] : 0;
+ $labels[$i] = sprintf("%02d",$i+1);
+ $datamin[$i] = $acct->min_desired;
+ }
+
+ // Fabrication tableau 4a
+ $file= $conf->banque->dir_temp."/movement".$account."-".$year.$month.".png";
+ $title=$langs->transnoentities("BankMovements").' - '.$langs->transnoentities("Month").': '.$month.' '.$langs->transnoentities("Year").': '.$year;
+ $graph_datas=array();
+ foreach($data_credit as $i => $val)
+ {
+ $graph_datas[$i]=array($labels[$i],$data_credit[$i],$data_debit[$i]);
+ }
+ $px = new DolGraph();
+ $px->SetData($graph_datas);
+ $px->SetLegend(array($langs->transnoentities("Credit"),$langs->transnoentities("Debit")));
+ $px->SetLegendWidthMin(180);
+ $px->SetMaxValue($px->GetCeilMaxValue()<0?0:$px->GetCeilMaxValue());
+ $px->SetMinValue($px->GetFloorMinValue()>0?0:$px->GetFloorMinValue());
+ $px->SetTitle($title);
+ $px->SetWidth($width);
+ $px->SetHeight($height);
+ $px->SetType('bars');
+ $px->SetShading(3);
+ $px->setBgColor('onglet');
+ $px->setBgColorGrid(array(255,255,255));
+ $px->SetHorizTickIncrement(1);
+ $px->SetPrecisionY(0);
+ $px->draw($file);
+
+ unset($graph_datas);
+ unset($px);
+ unset($debits);
+ unset($credits);
}
- else
+
+ // Tableau 4b - Credit/Debit
+
+ if ($mode == 'standard')
{
- print ' ';
- print '';
- print $langs->trans("ShowAllTimeBalance");
- print '';
- print ' |
';
+ // Chargement du tableau $credits, $debits
+ $credits = array();
+ $debits = array();
+ $sql = "SELECT date_format(datev,'%m'), sum(amount)";
+ $sql .= " FROM ".MAIN_DB_PREFIX."bank";
+ $sql .= " WHERE datev >= '".$year."-01-01 00:00:00'";
+ $sql .= " AND datev <= '".$year."-12-31 23:59:59'";
+ $sql .= " AND amount > 0";
+ if ($account) $sql .= " AND fk_account = ".$account;
+ $sql .= " GROUP BY date_format(datev,'%m');";
+ $resql = $db->query($sql);
+ if ($resql)
+ {
+ $num = $db->num_rows($resql);
+ $i = 0;
+ while ($i < $num)
+ {
+ $row = $db->fetch_row($resql);
+ $credits[$row[0]] = $row[1];
+ $i++;
+ }
+ $db->free($resql);
+ }
+ else
+ {
+ dolibarr_print_error($db);
+ }
+ $sql = "SELECT date_format(datev,'%m'), sum(amount)";
+ $sql .= " FROM ".MAIN_DB_PREFIX."bank";
+ $sql .= " WHERE datev >= '".$year."-01-01 00:00:00'";
+ $sql .= " AND datev <= '".$year."-12-31 23:59:59'";
+ $sql .= " AND amount < 0";
+ if ($account) $sql .= " AND fk_account = ".$account;
+ $sql .= " GROUP BY date_format(datev,'%m');";
+ $resql = $db->query($sql);
+ if ($resql)
+ {
+ while ($row = $db->fetch_row($resql))
+ {
+ $debits[$row[0]] = abs($row[1]);
+ }
+ $db->free($resql);
+ }
+ else
+ {
+ dolibarr_print_error($db);
+ }
+
+
+ // Chargement de labels et data_xxx pour tableau 4 Mouvements
+ $labels = array();
+ $data_credit = array();
+ $data_debit = array();
+ for ($i = 0 ; $i < 12 ; $i++)
+ {
+ $data_credit[$i] = isset($credits[substr("0".($i+1),-2)]) ? $credits[substr("0".($i+1),-2)] : 0;
+ $data_debit[$i] = isset($debits[substr("0".($i+1),-2)]) ? $debits[substr("0".($i+1),-2)] : 0;
+ $labels[$i] = dolibarr_print_date(dolibarr_mktime(12,0,0,$i+1,1,2000),"%b");
+ $datamin[$i] = $acct->min_desired;
+ }
+
+ // Fabrication tableau 4b
+ $file= $conf->banque->dir_temp."/movement".$account."-".$year.".png";
+ $title=$langs->transnoentities("BankMovements").' - '.$langs->transnoentities("Year").': '.$year;
+ $graph_datas=array();
+ foreach($data_credit as $i => $val)
+ {
+ $graph_datas[$i]=array($labels[$i],$data_credit[$i],$data_debit[$i]);
+ }
+ $px = new DolGraph();
+ $px->SetData($graph_datas);
+ $px->SetLegend(array($langs->transnoentities("Credit"),$langs->transnoentities("Debit")));
+ $px->SetLegendWidthMin(180);
+ $px->SetMaxValue($px->GetCeilMaxValue()<0?0:$px->GetCeilMaxValue());
+ $px->SetMinValue($px->GetFloorMinValue()>0?0:$px->GetFloorMinValue());
+ $px->SetTitle($title);
+ $px->SetWidth($width);
+ $px->SetHeight($height);
+ $px->SetType('bars');
+ $px->SetShading(3);
+ $px->setBgColor('onglet');
+ $px->setBgColorGrid(array(255,255,255));
+ $px->SetHorizTickIncrement(1);
+ $px->SetPrecisionY(0);
+ $px->draw($file);
+
+ unset($graph_datas);
+ unset($px);
+ unset($debits);
+ unset($credits);
}
-
- print '
';
-
- print "\n\n";
-
}
+
+// Onglets
+$head=bank_prepare_head($acct);
+dolibarr_fiche_head($head,'graph',$langs->trans("FinancialAccount"),0);
+
+if ($mesg) print $mesg.'
';
+
+print '';
+
+// Ref
+print '| '.$langs->trans("Ref").' | ';
+print '';
+if ($account)
+{
+ $moreparam='&month='.$month.'&year='.$year.($mode=='showalltime'?'&mode=showalltime':'');
+ print $form->showrefnav($acct,'ref','',1,'ref','ref','',$moreparam);
+}
+else
+{
+ print $langs->trans("ALL");
+}
+print ' |
';
+
+// Label
+print '| '.$langs->trans("Label").' | ';
+print '';
+if ($account)
+{
+ print $acct->label;
+}
+else
+{
+ print $langs->trans("AllAccounts");
+}
+print ' |
';
+
+print '
';
+
+print '
';
+
+
+print '';
+
+if ($mode == 'standard')
+{
+ $prevyear=$year;$nextyear=$year;
+ $prevmonth=$month-1;$nextmonth=$month+1;
+ if ($prevmonth < 1) { $prevmonth=12; $prevyear--; }
+ if ($nextmonth > 12) { $nextmonth=1; $nextyear++; }
+
+ // For month
+ $lien="".img_previous()." ".$langs->trans("Month")." ".img_next()."";
+ print '| '.$lien.' |
';
+
+ print '';
+ $file = "movement".$account."-".$year.$month.".png";
+ print ' ';
+
+ print ' |
';
+ $file = "balance".$account."-".$year.$month.".png";
+ print ' ';
+ print ' |
';
+
+ // For year
+ $prevyear=$year-1;$nextyear=$year+1;
+ $lien="".img_previous()." ".$langs->trans("Year")." ".img_next()."";
+ print '| '.$lien.' |
';
+
+ print '';
+ $file = "movement".$account."-".$year.".png";
+ print ' ';
+ print ' |
';
+
+ print '';
+ $file = "balance".$account."-".$year.".png";
+ print ' ';
+ print ' |
';
+}
+
+if ($mode == 'showalltime')
+{
+ print '';
+ $file = "balance".$account.".png";
+ print ' ';
+ print ' |
';
+}
+
+// Switch All time/Not all time
+if ($mode == 'showalltime')
+{
+ print ' ';
+ print '';
+ print $langs->trans("GoBack");
+ print '';
+ print ' |
';
+}
+else
+{
+ print ' ';
+ print '';
+ print $langs->trans("ShowAllTimeBalance");
+ print '';
+ print ' |
';
+}
+
+print '
';
+
+print "\n\n";
+
+
$db->close();
llxFooter('$Date$ - $Revision$');