Fix: Fix graph for product distribution.
Add limit and add entry other.
This commit is contained in:
parent
34fe1fba7f
commit
657c4d6e90
@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* \file htdocs/comm/propal/class/propal.class.php
|
* \file htdocs/comm/propal/class/propal.class.php
|
||||||
* \brief Fichier de la classe des propales
|
* \brief File of class to manage proposals
|
||||||
*/
|
*/
|
||||||
|
|
||||||
require_once DOL_DOCUMENT_ROOT .'/core/class/commonobject.class.php';
|
require_once DOL_DOCUMENT_ROOT .'/core/class/commonobject.class.php';
|
||||||
@ -36,8 +36,7 @@ require_once DOL_DOCUMENT_ROOT .'/contact/class/contact.class.php';
|
|||||||
require_once DOL_DOCUMENT_ROOT .'/margin/lib/margins.lib.php';
|
require_once DOL_DOCUMENT_ROOT .'/margin/lib/margins.lib.php';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \class Propal
|
* Class to manage proposals
|
||||||
* \brief Classe permettant la gestion des propales
|
|
||||||
*/
|
*/
|
||||||
class Propal extends CommonObject
|
class Propal extends CommonObject
|
||||||
{
|
{
|
||||||
|
|||||||
@ -21,7 +21,7 @@
|
|||||||
/**
|
/**
|
||||||
* \file htdocs/comm/propal/class/propalestats.class.php
|
* \file htdocs/comm/propal/class/propalestats.class.php
|
||||||
* \ingroup propales
|
* \ingroup propales
|
||||||
* \brief Fichier de la classe de gestion des stats des propales
|
* \brief File of class to manage proposals statistics
|
||||||
*/
|
*/
|
||||||
|
|
||||||
include_once DOL_DOCUMENT_ROOT . '/core/class/stats.class.php';
|
include_once DOL_DOCUMENT_ROOT . '/core/class/stats.class.php';
|
||||||
@ -30,7 +30,7 @@ include_once DOL_DOCUMENT_ROOT . '/core/lib/date.lib.php';
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class to manage proposal statistics
|
* Class to manage proposals statistics
|
||||||
*/
|
*/
|
||||||
class PropaleStats extends Stats
|
class PropaleStats extends Stats
|
||||||
{
|
{
|
||||||
@ -203,7 +203,7 @@ class PropaleStats extends Stats
|
|||||||
$sql.= " AND p.datep BETWEEN '".$this->db->idate(dol_get_first_day($year,1,false))."' AND '".$this->db->idate(dol_get_last_day($year,12,false))."'";
|
$sql.= " AND p.datep BETWEEN '".$this->db->idate(dol_get_first_day($year,1,false))."' AND '".$this->db->idate(dol_get_last_day($year,12,false))."'";
|
||||||
$sql.= " GROUP BY product.ref";
|
$sql.= " GROUP BY product.ref";
|
||||||
$sql.= $this->db->order('nb','DESC');
|
$sql.= $this->db->order('nb','DESC');
|
||||||
$sql.= $this->db->plimit(20);
|
//$sql.= $this->db->plimit(20);
|
||||||
|
|
||||||
return $this->_getAllByProduct($sql);
|
return $this->_getAllByProduct($sql);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -212,7 +212,7 @@ class CommandeStats extends Stats
|
|||||||
$sql.= " AND c.date_commande BETWEEN '".$this->db->idate(dol_get_first_day($year,1,false))."' AND '".$this->db->idate(dol_get_last_day($year,12,false))."'";
|
$sql.= " AND c.date_commande BETWEEN '".$this->db->idate(dol_get_first_day($year,1,false))."' AND '".$this->db->idate(dol_get_last_day($year,12,false))."'";
|
||||||
$sql.= " GROUP BY product.ref";
|
$sql.= " GROUP BY product.ref";
|
||||||
$sql.= $this->db->order('nb','DESC');
|
$sql.= $this->db->order('nb','DESC');
|
||||||
$sql.= $this->db->plimit(20);
|
//$sql.= $this->db->plimit(20);
|
||||||
|
|
||||||
return $this->_getAllByProduct($sql);
|
return $this->_getAllByProduct($sql);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -212,7 +212,7 @@ class FactureStats extends Stats
|
|||||||
$sql.= " AND f.datef BETWEEN '".$this->db->idate(dol_get_first_day($year,1,false))."' AND '".$this->db->idate(dol_get_last_day($year,12,false))."'";
|
$sql.= " AND f.datef BETWEEN '".$this->db->idate(dol_get_first_day($year,1,false))."' AND '".$this->db->idate(dol_get_last_day($year,12,false))."'";
|
||||||
$sql.= " GROUP BY product.ref";
|
$sql.= " GROUP BY product.ref";
|
||||||
$sql.= $this->db->order('nb','DESC');
|
$sql.= $this->db->order('nb','DESC');
|
||||||
$sql.= $this->db->plimit(20);
|
//$sql.= $this->db->plimit(20);
|
||||||
|
|
||||||
return $this->_getAllByProduct($sql);
|
return $this->_getAllByProduct($sql);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -66,8 +66,8 @@ class box_graph_invoices_permonth extends ModeleBoxes
|
|||||||
|
|
||||||
$refreshaction='refresh_'.$this->boxcode;
|
$refreshaction='refresh_'.$this->boxcode;
|
||||||
|
|
||||||
include_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
|
//include_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
|
||||||
$facturestatic=new Facture($db);
|
//$facturestatic=new Facture($db);
|
||||||
|
|
||||||
$text = $langs->trans("BoxCustomersInvoicesPerMonth",$max);
|
$text = $langs->trans("BoxCustomersInvoicesPerMonth",$max);
|
||||||
$this->info_box_head = array(
|
$this->info_box_head = array(
|
||||||
|
|||||||
@ -66,8 +66,8 @@ class box_graph_orders_permonth extends ModeleBoxes
|
|||||||
|
|
||||||
$refreshaction='refresh_'.$this->boxcode;
|
$refreshaction='refresh_'.$this->boxcode;
|
||||||
|
|
||||||
include_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php';
|
//include_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php';
|
||||||
$commandestatic=new Commande($db);
|
//$commandestatic=new Commande($db);
|
||||||
|
|
||||||
$text = $langs->trans("BoxCustomersOrdersPerMonth",$max);
|
$text = $langs->trans("BoxCustomersOrdersPerMonth",$max);
|
||||||
$this->info_box_head = array(
|
$this->info_box_head = array(
|
||||||
|
|||||||
@ -104,12 +104,13 @@ class box_graph_product_distribution extends ModeleBoxes
|
|||||||
if (empty($conf->produit->enabled)) $paramtitle=$langs->trans("Services");
|
if (empty($conf->produit->enabled)) $paramtitle=$langs->trans("Services");
|
||||||
if (empty($conf->service->enabled)) $paramtitle=$langs->trans("Products");
|
if (empty($conf->service->enabled)) $paramtitle=$langs->trans("Products");
|
||||||
|
|
||||||
|
$socid=empty($user->societe_id)?0:$user->societe_id;
|
||||||
|
$userid=0; // No filter on user creation
|
||||||
|
|
||||||
if ($user->rights->facture->lire)
|
if ($user->rights->facture->lire)
|
||||||
{
|
{
|
||||||
include_once DOL_DOCUMENT_ROOT.'/core/class/dolgraph.class.php';
|
include_once DOL_DOCUMENT_ROOT.'/core/class/dolgraph.class.php';
|
||||||
|
|
||||||
$mode='customer';
|
|
||||||
$userid=0;
|
|
||||||
$WIDTH=($nbofgraph >= 2 || ! empty($conf->dol_optimize_smallscreen))?'160':'320';
|
$WIDTH=($nbofgraph >= 2 || ! empty($conf->dol_optimize_smallscreen))?'160':'320';
|
||||||
$HEIGHT='192';
|
$HEIGHT='192';
|
||||||
|
|
||||||
@ -119,7 +120,8 @@ class box_graph_product_distribution extends ModeleBoxes
|
|||||||
include_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facturestats.class.php';
|
include_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facturestats.class.php';
|
||||||
|
|
||||||
$showpointvalue = 1; $nocolor = 0;
|
$showpointvalue = 1; $nocolor = 0;
|
||||||
$stats_invoice = new FactureStats($this->db, 0, $mode, ($userid>0?$userid:0));
|
$mode='customer';
|
||||||
|
$stats_invoice = new FactureStats($this->db, $socid, $mode, ($userid>0?$userid:0));
|
||||||
$data1 = $stats_invoice->getAllByProductEntry($year,(GETPOST('action')==$refreshaction?-1:(3600*24)));
|
$data1 = $stats_invoice->getAllByProductEntry($year,(GETPOST('action')==$refreshaction?-1:(3600*24)));
|
||||||
if (empty($data1))
|
if (empty($data1))
|
||||||
{
|
{
|
||||||
@ -134,17 +136,19 @@ class box_graph_product_distribution extends ModeleBoxes
|
|||||||
$mesg = $px1->isGraphKo();
|
$mesg = $px1->isGraphKo();
|
||||||
if (! $mesg)
|
if (! $mesg)
|
||||||
{
|
{
|
||||||
|
$i=0;$tot=count($data1);$legend=array();
|
||||||
|
while ($i <= $tot)
|
||||||
|
{
|
||||||
|
$data1[$i][0]=dol_trunc($data1[$i][0],5); // Required to avoid error "Could not draw pie with labels contained inside canvas"
|
||||||
|
$legend[]=$data1[$i][0];
|
||||||
|
$i++;
|
||||||
|
}
|
||||||
|
|
||||||
$px1->SetData($data1);
|
$px1->SetData($data1);
|
||||||
unset($data1);
|
unset($data1);
|
||||||
|
|
||||||
if ($nocolor) $px1->SetDataColor(array(array(220,220,220)));
|
if ($nocolor) $px1->SetDataColor(array(array(220,220,220)));
|
||||||
$px1->SetPrecisionY(0);
|
$px1->SetPrecisionY(0);
|
||||||
$i=0;$tot=count($data1);$legend=array();
|
|
||||||
while ($i <= $tot)
|
|
||||||
{
|
|
||||||
$legend[]=$data1[$i][0];
|
|
||||||
$i++;
|
|
||||||
}
|
|
||||||
$px1->SetLegend($legend);
|
$px1->SetLegend($legend);
|
||||||
$px1->setShowLegend(0);
|
$px1->setShowLegend(0);
|
||||||
$px1->setShowPointValue($showpointvalue);
|
$px1->setShowPointValue($showpointvalue);
|
||||||
@ -174,7 +178,7 @@ class box_graph_product_distribution extends ModeleBoxes
|
|||||||
include_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propalestats.class.php';
|
include_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propalestats.class.php';
|
||||||
|
|
||||||
$showpointvalue = 1; $nocolor = 0;
|
$showpointvalue = 1; $nocolor = 0;
|
||||||
$stats_proposal = new PropaleStats($this->db, 0, $mode, ($userid>0?$userid:0));
|
$stats_proposal = new PropaleStats($this->db, $socid, ($userid>0?$userid:0));
|
||||||
$data2 = $stats_proposal->getAllByProductEntry($year,(GETPOST('action')==$refreshaction?-1:(3600*24)));
|
$data2 = $stats_proposal->getAllByProductEntry($year,(GETPOST('action')==$refreshaction?-1:(3600*24)));
|
||||||
if (empty($data2))
|
if (empty($data2))
|
||||||
{
|
{
|
||||||
@ -190,17 +194,19 @@ class box_graph_product_distribution extends ModeleBoxes
|
|||||||
$mesg = $px2->isGraphKo();
|
$mesg = $px2->isGraphKo();
|
||||||
if (! $mesg)
|
if (! $mesg)
|
||||||
{
|
{
|
||||||
|
$i=0;$tot=count($data2);$legend=array();
|
||||||
|
while ($i <= $tot)
|
||||||
|
{
|
||||||
|
$data2[$i][0]=dol_trunc($data2[$i][0],5); // Required to avoid error "Could not draw pie with labels contained inside canvas"
|
||||||
|
$legend[]=$data2[$i][0];
|
||||||
|
$i++;
|
||||||
|
}
|
||||||
|
|
||||||
$px2->SetData($data2);
|
$px2->SetData($data2);
|
||||||
unset($data2);
|
unset($data2);
|
||||||
|
|
||||||
if ($nocolor) $px2->SetDataColor(array(array(220,220,220)));
|
if ($nocolor) $px2->SetDataColor(array(array(220,220,220)));
|
||||||
$px2->SetPrecisionY(0);
|
$px2->SetPrecisionY(0);
|
||||||
$i=0;$tot=count($data2);$legend=array();
|
|
||||||
while ($i <= $tot)
|
|
||||||
{
|
|
||||||
$legend[]=$data2[$i][0];
|
|
||||||
$i++;
|
|
||||||
}
|
|
||||||
$px2->SetLegend($legend);
|
$px2->SetLegend($legend);
|
||||||
$px2->setShowLegend(0);
|
$px2->setShowLegend(0);
|
||||||
$px2->setShowPointValue($showpointvalue);
|
$px2->setShowPointValue($showpointvalue);
|
||||||
@ -230,7 +236,8 @@ class box_graph_product_distribution extends ModeleBoxes
|
|||||||
include_once DOL_DOCUMENT_ROOT.'/commande/class/commandestats.class.php';
|
include_once DOL_DOCUMENT_ROOT.'/commande/class/commandestats.class.php';
|
||||||
|
|
||||||
$showpointvalue = 1; $nocolor = 0;
|
$showpointvalue = 1; $nocolor = 0;
|
||||||
$stats_order = new CommandeStats($this->db, 0, $mode, ($userid>0?$userid:0));
|
$mode='customer';
|
||||||
|
$stats_order = new CommandeStats($this->db, $socid, $mode, ($userid>0?$userid:0));
|
||||||
$data3 = $stats_order->getAllByProductEntry($year,(GETPOST('action')==$refreshaction?-1:(3600*24)));
|
$data3 = $stats_order->getAllByProductEntry($year,(GETPOST('action')==$refreshaction?-1:(3600*24)));
|
||||||
if (empty($data3))
|
if (empty($data3))
|
||||||
{
|
{
|
||||||
@ -246,17 +253,19 @@ class box_graph_product_distribution extends ModeleBoxes
|
|||||||
$mesg = $px3->isGraphKo();
|
$mesg = $px3->isGraphKo();
|
||||||
if (! $mesg)
|
if (! $mesg)
|
||||||
{
|
{
|
||||||
|
$i=0;$tot=count($data3);$legend=array();
|
||||||
|
while ($i <= $tot)
|
||||||
|
{
|
||||||
|
$data3[$i][0]=dol_trunc($data3[$i][0],5); // Required to avoid error "Could not draw pie with labels contained inside canvas"
|
||||||
|
$legend[]=$data3[$i][0];
|
||||||
|
$i++;
|
||||||
|
}
|
||||||
|
|
||||||
$px3->SetData($data3);
|
$px3->SetData($data3);
|
||||||
unset($data3);
|
unset($data3);
|
||||||
|
|
||||||
if ($nocolor) $px3->SetDataColor(array(array(220,220,220)));
|
if ($nocolor) $px3->SetDataColor(array(array(220,220,220)));
|
||||||
$px3->SetPrecisionY(0);
|
$px3->SetPrecisionY(0);
|
||||||
$i=0;$tot=count($data3);$legend=array();
|
|
||||||
while ($i <= $tot)
|
|
||||||
{
|
|
||||||
$legend[]=$data3[$i][0];
|
|
||||||
$i++;
|
|
||||||
}
|
|
||||||
$px3->SetLegend($legend);
|
$px3->SetLegend($legend);
|
||||||
$px3->setShowLegend(0);
|
$px3->setShowLegend(0);
|
||||||
$px3->setShowPointValue($showpointvalue);
|
$px3->setShowPointValue($showpointvalue);
|
||||||
|
|||||||
@ -66,8 +66,8 @@ class box_graph_propales_permonth extends ModeleBoxes
|
|||||||
|
|
||||||
$refreshaction='refresh_'.$this->boxcode;
|
$refreshaction='refresh_'.$this->boxcode;
|
||||||
|
|
||||||
include_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php';
|
//include_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php';
|
||||||
$commandestatic=new Propal($db);
|
//$propalstatic=new Propal($db);
|
||||||
|
|
||||||
$text = $langs->trans("BoxProposalsPerMonth",$max);
|
$text = $langs->trans("BoxProposalsPerMonth",$max);
|
||||||
$this->info_box_head = array(
|
$this->info_box_head = array(
|
||||||
@ -81,7 +81,7 @@ class box_graph_propales_permonth extends ModeleBoxes
|
|||||||
'target'=>'none' // Set '' to get target="_blank"
|
'target'=>'none' // Set '' to get target="_blank"
|
||||||
);
|
);
|
||||||
|
|
||||||
if ($user->rights->commande->lire)
|
if ($user->rights->propal->lire)
|
||||||
{
|
{
|
||||||
$param_year='DOLUSERCOOKIE_param'.$this->boxcode.'year';
|
$param_year='DOLUSERCOOKIE_param'.$this->boxcode.'year';
|
||||||
$param_shownb='DOLUSERCOOKIE_param'.$this->boxcode.'shownb';
|
$param_shownb='DOLUSERCOOKIE_param'.$this->boxcode.'shownb';
|
||||||
|
|||||||
@ -537,10 +537,13 @@ abstract class Stats
|
|||||||
* Return number or total of product refs
|
* Return number or total of product refs
|
||||||
*
|
*
|
||||||
* @param string $sql SQL
|
* @param string $sql SQL
|
||||||
|
* @param int $limit Limit
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
function _getAllByProduct($sql)
|
function _getAllByProduct($sql, $limit=10)
|
||||||
{
|
{
|
||||||
|
global $langs;
|
||||||
|
|
||||||
$result=array();
|
$result=array();
|
||||||
$res=array();
|
$res=array();
|
||||||
|
|
||||||
@ -549,14 +552,15 @@ abstract class Stats
|
|||||||
if ($resql)
|
if ($resql)
|
||||||
{
|
{
|
||||||
$num = $this->db->num_rows($resql);
|
$num = $this->db->num_rows($resql);
|
||||||
$i = 0; $j = 0;
|
$i = 0; $other=0;
|
||||||
while ($i < $num)
|
while ($i < $num)
|
||||||
{
|
{
|
||||||
$row = $this->db->fetch_row($resql);
|
$row = $this->db->fetch_row($resql);
|
||||||
$result[$j] = array($row[0],$row[1]); // Ref of product, nb
|
if ($i < $limit || $num == $limit) $result[$i] = array($row[0],$row[1]); // Ref of product, nb
|
||||||
$j++;
|
else $other += $row[1];
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
|
if ($num > $limit) $result[$i] = array($langs->transnoentitiesnoconv("Other"),$other);
|
||||||
$this->db->free($resql);
|
$this->db->free($resql);
|
||||||
}
|
}
|
||||||
else dol_print_error($this->db);
|
else dol_print_error($this->db);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user