From 5d7e0c484008719f6c5a959953bd5927cc7ada9d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 21 Dec 2007 01:18:51 +0000 Subject: [PATCH] Fix: Message erreur plus clair si safe_mode actif --- htdocs/compta/bank/graph.php | 816 +++++++++++++++++---------------- htdocs/langs/en_US/errors.lang | 4 +- htdocs/langs/fr_FR/errors.lang | 3 +- 3 files changed, 418 insertions(+), 405 deletions(-) diff --git a/htdocs/compta/bank/graph.php b/htdocs/compta/bank/graph.php index 47b62b9f291..6c4afd6ee03 100644 --- a/htdocs/compta/bank/graph.php +++ b/htdocs/compta/bank/graph.php @@ -22,7 +22,7 @@ /** \file htdocs/compta/bank/graph.php \ingroup banque - \brief Page de détail des transactions bancaires + \brief Page graph des transactions bancaires \version $Revision$ */ @@ -37,6 +37,7 @@ if (!$user->rights->banque->lire) $account = $_GET["account"]; $mesg = ''; +$error=0; llxHeader(); @@ -63,450 +64,459 @@ if ($_GET["account"] || $_GET["ref"]) } - create_exdir($conf->banque->dir_temp); - - - // Definition de $width et $height - $width = 800; - $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; - $resql = $db->query($sql); - if ($resql) + $result=create_exdir($conf->banque->dir_temp); + if ($result < 0) { - $num = $db->num_rows($resql); - $row = $db->fetch_row($resql); - $min = $row[0]; - $max = $row[1]; + $langs->load("errors"); + $error++; + $mesg='
'.$langs->trans("ErrorFailedToCreateDir").'
'; } else { - dolibarr_print_error($db); - } - $log="graph.php: min=".$min." max=".$max; - dolibarr_syslog($log); - - // Tableau 1 + // Definition de $width et $height + $width = 800; + $height = 200; - - // 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) - { - $num = $db->num_rows($resql); - $i = 0; - while ($i < $num) + // 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; + $resql = $db->query($sql); + if ($resql) { + $num = $db->num_rows($resql); $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."-".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); - $xmonth = $month; - - $i = 0; - while ($xmonth == $month) - { - $textdate = strftime("%Y%m%d",$day); - $xyear = substr($textdate,0,4); - $xday = substr($textdate,6,2); - $xmonth = substr($textdate,4,2); - - //print strftime ("%e %d %m %y",$day)."\n"; - $subtotal = $subtotal + (isset($amounts[$textdate]) ? $amounts[$textdate] : 0); - if ($day > time()) - { - $datas[$i] = ''; // Valeur spéciale permettant de ne pas tracer le graph + $min = $row[0]; + $max = $row[1]; } else { - $datas[$i] = $solde + $subtotal; + dolibarr_print_error($db); } - $datamin[$i] = $acct->min_desired; - //$labels[$i] = strftime("%d",$day); - $labels[$i] = $xday; - $day += 86400; - $i++; - } - - // 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->SetHorizTickIncrement(1); - $px->SetPrecisionY(0); - $px->draw($file); + $log="graph.php: min=".$min." max=".$max; + dolibarr_syslog($log); + - unset($graph_datas); - unset($px); - unset($datas); - unset($datamin); - unset($labels); - unset($amounts); - + // Tableau 1 + - // Tableau 2 - - - // 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) + // 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); - $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); - $i = 0; - $xyear = $year; - while ($xyear == $year) - { - $textdate = strftime("%Y%m%d",$day); - $xyear = substr($textdate,0,4); - $xday = substr($textdate,6,2); - - $subtotal = $subtotal + (isset($amounts[$textdate]) ? $amounts[$textdate] : 0); - if ($day > $now) - { - $datas[$i] = ''; // Valeur spéciale permettant de ne pas tracer le graph + $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 { - $datas[$i] = $solde + $subtotal; + dolibarr_print_error($db); } - $datamin[$i] = $acct->min_desired; - if ($xday == '15') - { - $labels[$i] = dolibarr_print_date($day,"%b"); - } - $day += 86400; - $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->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 - - - // 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) + // 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); - $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; - $i = 0; - while ($day <= ($max+86400)) // On va au dela du dernier jour - { - $textdate=strftime("%Y%m%d",$day); - - $subtotal = $subtotal + (isset($amounts[$textdate]) ? $amounts[$textdate] : 0); - //print strftime ("%e %d %m %y",$day)." ".$subtotal."\n
"; - if ($day > ($max+86400)) - { - $datas[$i] = ''; // Valeur spéciale permettant de ne pas tracer le graph + $solde = $row[0]; + $db->free($resql); } else { - $datas[$i] = '' + $solde + $subtotal; + dolibarr_print_error($db); } - $datamin[$i] = $acct->min_desired; - if (substr($textdate,6,2) == '01') - { - $labels[$i] = substr($textdate,4,2); - } - $day += 86400; - $i++; - } - - // Fabrication tableau 3 - $file= $conf->banque->dir_temp."/balance.$account.png"; - $title=$langs->transnoentities("Balance"); - $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->SetPrecisionY(0); - $px->draw($file); - - unset($graph_datas); - unset($datas); - unset($datamin); - unset($labels); - unset($amounts); + // Chargement de labels et datas pour tableau 1 + $labels = array(); + $datas = array(); + $datamin = array(); - // Tableau 4 + $subtotal = 0; + $day = dolibarr_mktime(12,0,0,$month,1,$year); + $xmonth = $month; - - // 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 date_format(datev,'%Y') = '".$year."'"; - $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) + while ($xmonth == $month) { - $row = $db->fetch_row($resql); - $credits[$row[0]] = $row[1]; + $textdate = strftime("%Y%m%d",$day); + $xyear = substr($textdate,0,4); + $xday = substr($textdate,6,2); + $xmonth = substr($textdate,4,2); + + //print strftime ("%e %d %m %y",$day)."\n"; + $subtotal = $subtotal + (isset($amounts[$textdate]) ? $amounts[$textdate] : 0); + if ($day > time()) + { + $datas[$i] = ''; // Valeur sp�ciale 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; $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 date_format(datev,'%Y') = '".$year."'"; - $sql .= " AND amount < 0"; - $sql .= " GROUP BY date_format(datev,'%m');"; - $resql = $db->query($sql); - if ($resql) - { - while ($row = $db->fetch_row($resql)) + + // 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) { - $debits[$row[0]] = abs($row[1]); + 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->SetHorizTickIncrement(1); + $px->SetPrecisionY(0); + $px->draw($file); + + unset($graph_datas); + unset($px); + unset($datas); + unset($datamin); + unset($labels); + unset($amounts); + + + // Tableau 2 + + + // 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); } - $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); + $i = 0; + $xyear = $year; + while ($xyear == $year) + { + $textdate = strftime("%Y%m%d",$day); + $xyear = substr($textdate,0,4); + $xday = substr($textdate,6,2); + + $subtotal = $subtotal + (isset($amounts[$textdate]) ? $amounts[$textdate] : 0); + if ($day > $now) + { + $datas[$i] = ''; // Valeur sp�ciale 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; + $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->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 + + + // 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; + $i = 0; + while ($day <= ($max+86400)) // On va au dela du dernier jour + { + $textdate=strftime("%Y%m%d",$day); + + $subtotal = $subtotal + (isset($amounts[$textdate]) ? $amounts[$textdate] : 0); + //print strftime ("%e %d %m %y",$day)." ".$subtotal."\n
"; + if ($day > ($max+86400)) + { + $datas[$i] = ''; // Valeur sp�ciale permettant de ne pas tracer le graph + } + else + { + $datas[$i] = '' + $solde + $subtotal; + } + $datamin[$i] = $acct->min_desired; + if (substr($textdate,6,2) == '01') + { + $labels[$i] = substr($textdate,4,2); + } + $day += 86400; + $i++; + } + + // Fabrication tableau 3 + $file= $conf->banque->dir_temp."/balance.$account.png"; + $title=$langs->transnoentities("Balance"); + $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->SetPrecisionY(0); + $px->draw($file); + + unset($graph_datas); + unset($datas); + unset($datamin); + unset($labels); + unset($amounts); + + + // Tableau 4 + + + // 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 date_format(datev,'%Y') = '".$year."'"; + $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 date_format(datev,'%Y') = '".$year."'"; + $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] = strftime("%b",dolibarr_mktime(12,0,0,$i+1,1,2000)); + $datamin[$i] = $acct->min_desired; + } + + // Fabrication tableau 4 + $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(8); + $px->setBgColor('onglet'); + $px->SetHorizTickIncrement(1); + $px->SetPrecisionY(0); + $px->draw($file); + + unset($graph_datas); + unset($px); + unset($debits); + unset($credits); } - 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] = strftime("%b",dolibarr_mktime(12,0,0,$i+1,1,2000)); - $datamin[$i] = $acct->min_desired; - } - - // Fabrication tableau 4 - $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(8); - $px->setBgColor('onglet'); - $px->SetHorizTickIncrement(1); - $px->SetPrecisionY(0); - $px->draw($file); - - unset($graph_datas); - unset($px); - unset($debits); - unset($credits); - // Onglets $head=bank_prepare_head($acct); dolibarr_fiche_head($head,'graph',$langs->trans("FinancialAccount"),0); + if ($mesg) print $mesg.'
'; + print ''; // Ref diff --git a/htdocs/langs/en_US/errors.lang b/htdocs/langs/en_US/errors.lang index d9d0a83e624..5ad2fb021a0 100644 --- a/htdocs/langs/en_US/errors.lang +++ b/htdocs/langs/en_US/errors.lang @@ -14,4 +14,6 @@ ErrorSupplierCodeRequired=Supplier code required ErrorSupplierCodeAlreadyUsed=Supplier code already used ErrorBadParameters=Bad parameters UserCannotBeDelete=User can not be deleted. May be it is associated on Dolibarr entities. -ErrorFieldsRequired=Some required fields were not filled. \ No newline at end of file +ErrorFieldsRequired=Some required fields were not filled. +ErrorFailedToCreateDir=Failed to create a directory. Check that Web server user has permissions to write into Dolibarr documents directory. If parameter safe_mode is enabled on this PHP, check that Dolibarr php files owns to web server user (or group). + diff --git a/htdocs/langs/fr_FR/errors.lang b/htdocs/langs/fr_FR/errors.lang index 1ce8503a3e8..ece09396145 100644 --- a/htdocs/langs/fr_FR/errors.lang +++ b/htdocs/langs/fr_FR/errors.lang @@ -14,4 +14,5 @@ ErrorSupplierCodeRequired=Code fournisseur obligatoire ErrorSupplierCodeAlreadyUsed=Code fournisseur deja utilise ErrorBadParameters=Parametres incorrects UserCannotBeDelete=L'utilisateur ne peut pas etre supprimée. Peut-être est-il associé à des éléments de Dolibarr. -ErrorFieldsRequired=Des champs obligatoires n'ont pas été renseignés \ No newline at end of file +ErrorFieldsRequired=Des champs obligatoires n'ont pas été renseignés +ErrorFailedToCreateDir=Echec a la creation d'un repertoire. Verifiez que le user du serveur Web a bien les droits d'ecriture dans les repertoires documents de Dolibarr. Si le parametre safe_mode a été activé sur ce PHP, vérifier que les fichiers php dolibarr appartiennent à l'utilisateur du serveur Web.