diff --git a/htdocs/compta/deplacement/class/deplacementstats.class.php b/htdocs/compta/deplacement/class/deplacementstats.class.php
index c87b4ea033fe6171205014988c754619ad3ee9f5..cf5f7fda45a70a0b601e3cc8a1e2b1152d3c77f8 100644
--- a/htdocs/compta/deplacement/class/deplacementstats.class.php
+++ b/htdocs/compta/deplacement/class/deplacementstats.class.php
@@ -45,7 +45,7 @@ class DeplacementStats extends Stats
 	 *
 	 * @param 	DoliDB		$db		   Database handler
 	 * @param 	int			$socid	   Id third party
-     * @param   int			$userid    Id user for filter
+     * @param   mixed		$userid    Id user for filter or array of user ids
 	 * @return 	void
 	 */
 	function __construct($db, $socid=0, $userid=0)
@@ -66,7 +66,8 @@ class DeplacementStats extends Stats
 		{
 			$this->where.=" AND fk_soc = ".$this->socid;
 		}
-        if ($this->userid > 0) $this->where.=' AND fk_user = '.$this->userid;
+		if (is_array($this->userid) && count($this->userid) > 0) $this->where.=' AND fk_user IN ('.join(',',$this->userid).')';
+        else if ($this->userid > 0) $this->where.=' AND fk_user = '.$this->userid;
 	}
 
 
diff --git a/htdocs/compta/deplacement/index.php b/htdocs/compta/deplacement/index.php
index 156201ac26e432f8f4195761c1510589e77f484f..37a0f944bb3257ef4b8bc2da115929718def4596 100644
--- a/htdocs/compta/deplacement/index.php
+++ b/htdocs/compta/deplacement/index.php
@@ -67,7 +67,7 @@ $totalnb=0;
 $sql = "SELECT count(d.rowid) as nb, sum(d.km) as km, d.type";
 $sql.= " FROM ".MAIN_DB_PREFIX."deplacement as d";
 $sql.= " WHERE d.entity = ".$conf->entity;
-if (empty($user->rights->deplacement->readall) && empty($user->rights->deplacement->lire_tous)) $sql.=' AND d.fk_user_author IN ('.join(',',$childids).')';
+if (empty($user->rights->deplacement->readall) && empty($user->rights->deplacement->lire_tous)) $sql.=' AND d.fk_user IN ('.join(',',$childids).')';
 $sql.= " GROUP BY d.type";
 $sql.= " ORDER BY d.type";
 
@@ -138,7 +138,7 @@ $sql.= " FROM ".MAIN_DB_PREFIX."deplacement as d, ".MAIN_DB_PREFIX."user as u";
 if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."societe_commerciaux as sc";
 $sql.= " WHERE u.rowid = d.fk_user";
 $sql.= " AND d.entity = ".$conf->entity;
-if (empty($user->rights->deplacement->readall) && empty($user->rights->deplacement->lire_tous)) $sql.=' AND d.fk_user_author IN ('.join(',',$childids).')';
+if (empty($user->rights->deplacement->readall) && empty($user->rights->deplacement->lire_tous)) $sql.=' AND d.fk_user IN ('.join(',',$childids).')';
 if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= " AND d.fk_soc = s. rowid AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id;
 if ($socid) $sql.= " AND d.fk_soc = ".$socid;
 $sql.= $db->order("d.tms","DESC");
diff --git a/htdocs/compta/deplacement/list.php b/htdocs/compta/deplacement/list.php
index bc4406448dfda458b2485e8392d9cf37fbd5b723..bb2c50b42bf704ef8661045a81828e6d69d33558 100644
--- a/htdocs/compta/deplacement/list.php
+++ b/htdocs/compta/deplacement/list.php
@@ -58,6 +58,9 @@ $search_ref=GETPOST('search_ref','alpha');
 $tripandexpense_static=new Deplacement($db);
 $userstatic = new User($db);
 
+$childids = $user->getAllChildIds();
+$childids[]=$user->id;
+
 llxHeader();
 
 $sql = "SELECT s.nom, s.rowid as socid,";				// Ou
@@ -70,6 +73,7 @@ $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON d.fk_soc = s.rowid";
 if (!$user->rights->societe->client->voir && !$socid) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON s.rowid = sc.fk_soc";
 $sql.= " WHERE d.fk_user = u.rowid";
 $sql.= " AND d.entity = ".$conf->entity;
+if (empty($user->rights->deplacement->readall) && empty($user->rights->deplacement->lire_tous)) $sql.=' AND d.fk_user IN ('.join(',',$childids).')';
 if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND sc.fk_user = " .$user->id;
 if ($socid) $sql.= " AND s.rowid = ".$socid;
 if (trim($search_ref) != '')
@@ -167,6 +171,7 @@ else
 {
     dol_print_error($db);
 }
-$db->close();
 
 llxFooter();
+
+$db->close();
diff --git a/htdocs/compta/deplacement/stats/index.php b/htdocs/compta/deplacement/stats/index.php
index 6e7020025057c11bb35c832825b8517e655c745a..0d0a32a877c7b30b3b3e1e301103287a90fd4f39 100644
--- a/htdocs/compta/deplacement/stats/index.php
+++ b/htdocs/compta/deplacement/stats/index.php
@@ -45,6 +45,18 @@ if ($user->societe_id > 0)
 if ($user->societe_id) $socid=$user->societe_id;
 $result = restrictedArea($user, 'deplacement', $id,'');
 
+// Other security check
+$childids = $user->getAllChildIds();
+$childids[]=$user->id;
+if ($userid > 0)
+{
+	if (empty($user->rights->deplacement->readall) && empty($user->rights->deplacement->lire_tous) && ! in_array($userid, $childids))
+	{
+		accessforbidden();
+		exit;
+	}
+}
+
 $nowyear=strftime("%Y", dol_now());
 $year = GETPOST('year')>0?GETPOST('year'):$nowyear;
 //$startyear=$year-2;
@@ -60,6 +72,7 @@ $mode=GETPOST("mode")?GETPOST("mode"):'customer';
 
 $form=new Form($db);
 
+
 llxHeader();
 
 $title=$langs->trans("TripsAndExpensesStatistics");
@@ -69,7 +82,14 @@ print_fiche_titre($title, $mesg);
 
 dol_mkdir($dir);
 
-$stats = new DeplacementStats($db, $socid, $userid);
+$useridtofilter=$userid;	// Filter from parameters
+if (empty($useridtofilter))
+{
+	$useridtofilter=$childids;
+	if (! empty($user->rights->deplacement->readall) || ! empty($user->rights->deplacement->lire_tous)) $useridtofilter=0;
+}
+
+$stats = new DeplacementStats($db, $socid, $useridtofilter);
 
 
 // Build graphic number of object
@@ -220,7 +240,9 @@ print $form->select_company($socid,'socid',$filter,1,1);
 print '</td></tr>';
 // User
 print '<tr><td>'.$langs->trans("User").'</td><td>';
-print $form->select_dolusers($userid,'userid',1);
+$include='';
+if (empty($user->rights->deplacement->readall) && empty($user->rights->deplacement->lire_tous)) $include='hierarchy';
+print $form->select_dolusers($userid,'userid',1,'',0,$include);
 print '</td></tr>';
 // Year
 print '<tr><td>'.$langs->trans("Year").'</td><td>';
diff --git a/htdocs/compta/hrm.php b/htdocs/compta/hrm.php
index dae4ce9aa7d5b1913dcee775690a5a759c7261fd..6252f0f6ef7920e79d6a2ea468d0b2a3d841eea8 100644
--- a/htdocs/compta/hrm.php
+++ b/htdocs/compta/hrm.php
@@ -60,6 +60,8 @@ if ($user->societe_id > 0) accessforbidden();
 $holiday = new Holiday($db);
 $holidaystatic=new Holiday($db);
 
+$childids = $user->getAllChildIds();
+$childids[]=$user->id;
 
 llxHeader(array(),$langs->trans('HRMArea'));
 
@@ -118,6 +120,7 @@ $sql.= " FROM ".MAIN_DB_PREFIX."deplacement as d, ".MAIN_DB_PREFIX."user as u";
 if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."societe_commerciaux as sc";
 $sql.= " WHERE u.rowid = d.fk_user";
 $sql.= " AND d.entity = ".$conf->entity;
+if (empty($user->rights->deplacement->readall) && empty($user->rights->deplacement->lire_tous)) $sql.=' AND d.fk_user IN ('.join(',',$childids).')';
 if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= " AND d.fk_soc = s. rowid AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id;
 if (!empty($socid)) $sql.= " AND d.fk_soc = ".$socid;
 $sql.= $db->order("d.tms","DESC");