Merge pull request #6509 from marcosgdf/bug-6507

FIX #6507: Statistics counter show wrong total Contract numbers when the user does not have full access
This commit is contained in:
Laurent Destailleur 2017-03-14 10:30:25 +01:00 committed by GitHub
commit 214350a8f5
2 changed files with 15 additions and 11 deletions

View File

@ -2045,7 +2045,7 @@ class Contrat extends CommonObject
$sql = "SELECT count(c.rowid) as nb"; $sql = "SELECT count(c.rowid) as nb";
$sql.= " FROM ".MAIN_DB_PREFIX."contrat as c"; $sql.= " FROM ".MAIN_DB_PREFIX."contrat as c";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON c.fk_soc = s.rowid"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON c.fk_soc = s.rowid";
if (!$user->rights->contrat->lire && !$user->societe_id) if (!$user->rights->societe->client->voir && !$user->societe_id)
{ {
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON s.rowid = sc.fk_soc"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON s.rowid = sc.fk_soc";
$sql.= " WHERE sc.fk_user = " .$user->id; $sql.= " WHERE sc.fk_user = " .$user->id;

View File

@ -3,7 +3,7 @@
* Copyright (C) 2005-2016 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2005-2016 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2010 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2005-2010 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro> * Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
* Copyright (C) 2014-2015 Marcos García <marcosgdf@gmail.com> * Copyright (C) 2014-2017 Marcos García <marcosgdf@gmail.com>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -1689,17 +1689,21 @@ class Project extends CommonObject
*/ */
function load_state_board() function load_state_board()
{ {
global $conf; global $user;
$this->nb=array(); $this->nb=array();
$sql = "SELECT count(u.rowid) as nb"; $sql = "SELECT DISTINCT
$sql.= " FROM ".MAIN_DB_PREFIX."projet as u"; count(p.rowid) as nb
$sql.= " WHERE"; FROM ".MAIN_DB_PREFIX."projet AS p LEFT JOIN ".MAIN_DB_PREFIX."societe AS s ON p.fk_soc = s.rowid
//$sql.= " WHERE u.fk_statut > 0"; LEFT JOIN ".MAIN_DB_PREFIX."c_lead_status AS cls ON p.fk_opp_status = cls.rowid
//$sql.= " AND employee != 0"; WHERE p.entity IN (".getEntity('projet', 1).")";
$sql.= " u.entity IN (".getEntity('projet', 1).")";
if (! $user->rights->projet->all->lire) {
$projectsListId = $this->getProjectsAuthorizedForUser($user,0,1);
$sql .= "AND p.rowid IN (".$projectsListId.")";
}
$resql=$this->db->query($sql); $resql=$this->db->query($sql);
if ($resql) if ($resql)
{ {