diff --git a/htdocs/core/class/stats.class.php b/htdocs/core/class/stats.class.php index f29d737eadfa976b1bd1515e8d898a4404b490b5..1dc405ecbad29e8e818201088884c6fa604c129c 100644 --- a/htdocs/core/class/stats.class.php +++ b/htdocs/core/class/stats.class.php @@ -383,11 +383,11 @@ abstract class Stats $row = $this->db->fetch_object($resql); $result[$i]['year'] = $row->year; $result[$i]['nb'] = $row->nb; - if($i>0) $result[$i-1]['nb_diff'] = ($result[$i-1]['nb'] - $row->nb) / $row->nb * 100; + if($i>0 && $row->nb) $result[$i-1]['nb_diff'] = ($result[$i-1]['nb'] - $row->nb) / $row->nb * 100; $result[$i]['total'] = $row->total; - if($i>0) $result[$i-1]['total_diff'] = ($result[$i-1]['total'] - $row->total) / $row->total * 100; + if($i>0 && $row->total) $result[$i-1]['total_diff'] = ($result[$i-1]['total'] - $row->total) / $row->total * 100; $result[$i]['avg'] = $row->avg; - if($i>0) $result[$i-1]['avg_diff'] = ($result[$i-1]['avg'] - $row->avg) / $row->avg * 100; + if($i>0 && $row->avg) $result[$i-1]['avg_diff'] = ($result[$i-1]['avg'] - $row->avg) / $row->avg * 100; $i++; } $this->db->free($resql); diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index 1ebd540d397f08eb0d5a493d618f5de475e28cca..33e9a745665c9b87a5df4d652c1f0430b1f5f71d 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -1190,12 +1190,12 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu // Project affected to user $newmenu->add("/projet/index.php?leftmenu=projects&mode=mine", $langs->trans("MyProjects"), 0, $user->rights->projet->lire, '', $mainmenu, 'myprojects'); $newmenu->add("/projet/card.php?leftmenu=projects&action=create&mode=mine", $langs->trans("NewProject"), 1, $user->rights->projet->creer); - $newmenu->add("/projet/list.php?leftmenu=projects&mode=mine", $langs->trans("List"), 1, $user->rights->projet->lire); + $newmenu->add("/projet/list.php?leftmenu=projects&mode=mine&search_status=1", $langs->trans("List"), 1, $user->rights->projet->lire); // All project i have permission on $newmenu->add("/projet/index.php?leftmenu=projects", $langs->trans("Projects"), 0, $user->rights->projet->lire && $user->rights->projet->lire, '', $mainmenu, 'projects'); $newmenu->add("/projet/card.php?leftmenu=projects&action=create", $langs->trans("NewProject"), 1, $user->rights->projet->creer && $user->rights->projet->creer); - $newmenu->add("/projet/list.php?leftmenu=projects", $langs->trans("List"), 1, $user->rights->projet->lire && $user->rights->projet->lire); + $newmenu->add("/projet/list.php?leftmenu=projects&search_status=1", $langs->trans("List"), 1, $user->rights->projet->lire && $user->rights->projet->lire); $newmenu->add("/projet/stats/index.php?leftmenu=projects", $langs->trans("Statistics"), 1, $user->rights->projet->lire && $user->rights->projet->lire); if (empty($conf->global->PROJECT_HIDE_TASKS)) diff --git a/htdocs/langs/en_US/projects.lang b/htdocs/langs/en_US/projects.lang index c15f99996d42e5f2d0a0faa79212ef24bd6fc447..78b50356fd1b95ce71704af4552ce0258df0614d 100644 --- a/htdocs/langs/en_US/projects.lang +++ b/htdocs/langs/en_US/projects.lang @@ -27,7 +27,7 @@ OfficerProject=Officer project LastProjects=Last %s projects AllProjects=All projects OpenedProjects=Opened projects -OpportunitiesStatusForOpenedProjects=Opportunities status for opened projects +OpportunitiesStatusForOpenedProjects=Opportunities amount of opened projects by status ProjectsList=List of projects ShowProject=Show project SetProject=Set project diff --git a/htdocs/projet/class/projectstats.class.php b/htdocs/projet/class/projectstats.class.php index b33305f4558ee035311202610922af3349f761f7..98e9c0ce3e0429ab2444feaff38b94ce1f7bd4d5 100644 --- a/htdocs/projet/class/projectstats.class.php +++ b/htdocs/projet/class/projectstats.class.php @@ -44,8 +44,8 @@ class ProjectStats extends Stats /** * Return all leads grouped by status * - * @param int $limit Limit results - * @return array|int + * @param int $limit Limit results + * @return array|int Array with value or -1 if error * @throws Exception */ function getAllProjectByStatus($limit = 5) @@ -55,11 +55,11 @@ class ProjectStats extends Stats $datay = array (); $sql = "SELECT"; - $sql .= " count(DISTINCT t.rowid), t.fk_opp_status"; - $sql .= " FROM " . MAIN_DB_PREFIX . "projet as t"; + $sql .= " SUM(t.opp_amount), t.fk_opp_status, cls.code, cls.label"; + $sql .= " FROM " . MAIN_DB_PREFIX . "projet as t, ".MAIN_DB_PREFIX."c_lead_status as cls"; $sql .= $this->buildWhere(); - $sql .= " AND t.fk_statut = 1"; - $sql .= " GROUP BY t.fk_opp_status"; + $sql .= " AND t.fk_opp_status = cls.rowid AND t.fk_statut = 1"; + $sql .= " GROUP BY t.fk_opp_status, cls.code, cls.label"; $result = array (); $res = array (); @@ -73,13 +73,16 @@ class ProjectStats extends Stats while ( $i < $num ) { $row = $this->db->fetch_row($resql); if ($i < $limit || $num == $limit) - $result[$i] = array ( - $this->projet->status[$row[1]] . '(' . $row[0] . ')', - $row[0] + { + $label = (($langs->trans("OppStatus".$row[2]) != "OppStatus".$row[2]) ? $langs->trans("OppStatus".$row[2]) : $row[2]); + $result[$i] = array( + $label. ' (' . price(price2num($row[0], 'MT'), 1, $langs, 1, -1, -1, $conf->currency) . ')', + $row[0] ); + } else $other += $row[1]; - $i ++; + $i++; } if ($num > $limit) $result[$i] = array ( @@ -90,7 +93,7 @@ class ProjectStats extends Stats } else { $this->error = "Error " . $this->db->lasterror(); dol_syslog(get_class($this) . '::' . __METHOD__ . ' ' . $this->error, LOG_ERR); - return - 1; + return -1; } return $result; diff --git a/htdocs/projet/stats/index.php b/htdocs/projet/stats/index.php index a93d23da7bb3bc264402319a044081ec8cd5feb3..5e81be3bf78dce5970af50201ff0d04f4060d665 100644 --- a/htdocs/projet/stats/index.php +++ b/htdocs/projet/stats/index.php @@ -122,7 +122,7 @@ if (! empty($conf->global->PROJECT_USE_OPPORTUNITIES)) $px->SetType(array ( 'pie' )); - $px->SetTitle($langs->trans('ProjectOpenedProjectByOppStatus')); + $px->SetTitle($langs->trans('OpportunitiesStatusForOpenedProjects')); $result=$px->draw($filenamenb, $fileurlnb); if ($result<0) { setEventMessages($px->error, null, 'errors');