diff --git a/htdocs/product/stats/commande.php b/htdocs/product/stats/commande.php
index 9491b18da1e15c8ab0585ab72d8b0a9f9d91aea4..42925a704ecd42726e388de343a5f22850d7b145 100644
--- a/htdocs/product/stats/commande.php
+++ b/htdocs/product/stats/commande.php
@@ -128,9 +128,9 @@ if ($id > 0 || ! empty($ref))
 
 		if ($user->rights->commande->lire)
 		{
-			$sql = "SELECT distinct s.nom as name, s.rowid as socid, s.code_client, c.rowid, d.total_ht as total_ht, c.ref,";
+			$sql = "SELECT DISTINCT s.nom as name, s.rowid as socid, s.code_client, c.rowid, d.total_ht as total_ht, c.ref,";
 			$sql .= " c.ref_client,";
-			$sql.= " c.date_commande, c.fk_statut as statut, c.facture, c.rowid as commandeid, d.qty";
+			$sql.= " c.date_commande, c.fk_statut as statut, c.facture, c.rowid as commandeid, d.rowid, d.qty";
 			if (!$user->rights->societe->client->voir && !$socid) $sql.= ", sc.fk_soc, sc.fk_user ";
 			$sql.= " FROM ".MAIN_DB_PREFIX."societe as s";
 			$sql.= ", ".MAIN_DB_PREFIX."commande as c";
diff --git a/htdocs/product/stats/commande_fournisseur.php b/htdocs/product/stats/commande_fournisseur.php
index e7a803c299c5e02c14ff044b0271c3eec4297efd..0516163b2a1c54d41f076e1f98ad1a6ec6162d27 100644
--- a/htdocs/product/stats/commande_fournisseur.php
+++ b/htdocs/product/stats/commande_fournisseur.php
@@ -135,9 +135,9 @@ if ($id > 0 || ! empty($ref)) {
 		print '</div>';
 
 		if ($user->rights->fournisseur->commande->lire) {
-			$sql = "SELECT distinct s.nom as name, s.rowid as socid, s.code_client,";
+			$sql = "SELECT DISTINCT s.nom as name, s.rowid as socid, s.code_client,";
 			$sql .= " c.rowid, d.total_ht as total_ht, c.ref,";
-			$sql .= " c.date_commande, c.fk_statut as statut, c.rowid as commandeid, d.qty";
+			$sql .= " c.date_commande, c.fk_statut as statut, c.rowid as commandeid, d.rowid, d.qty";
 			if (! $user->rights->societe->client->voir && ! $socid)
 				$sql .= ", sc.fk_soc, sc.fk_user ";
 			$sql .= " FROM " . MAIN_DB_PREFIX . "societe as s";
diff --git a/htdocs/product/stats/facture.php b/htdocs/product/stats/facture.php
index 2a79b97e399868c6942cdee4f5429d6800a1a84f..9c400dcdeaaf2d50e20c9b0823ce832948a2277e 100644
--- a/htdocs/product/stats/facture.php
+++ b/htdocs/product/stats/facture.php
@@ -128,10 +128,11 @@ if ($id > 0 || ! empty($ref))
 		print '</div>';
 
 
-        if ($user->rights->facture->lire) {
-            $sql = "SELECT distinct s.nom as name, s.rowid as socid, s.code_client,";
-            $sql.= " f.facnumber, d.total_ht as total_ht,";
-            $sql.= " f.datef, f.paye, f.fk_statut as statut, f.rowid as facid, d.qty";
+        if ($user->rights->facture->lire) 
+        {
+            $sql = "SELECT DISTINCT s.nom as name, s.rowid as socid, s.code_client,";
+            $sql.= " f.facnumber, f.datef, f.paye, f.fk_statut as statut, f.rowid as facid,";
+            $sql.= " d.rowid, d.total_ht as total_ht, d.qty";           // We must keep the d.rowid here to not loose record because of the distinct used to ignore duplicate line when link on societe_commerciaux is used
             if (!$user->rights->societe->client->voir && !$socid) $sql.= ", sc.fk_soc, sc.fk_user ";
             $sql.= " FROM ".MAIN_DB_PREFIX."societe as s";
             $sql.= ", ".MAIN_DB_PREFIX."facture as f";
@@ -147,24 +148,27 @@ if ($id > 0 || ! empty($ref))
             	$sql.= ' AND YEAR(f.datef) IN (' . $search_year . ')';
             if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id;
             if ($socid) $sql.= " AND f.fk_soc = ".$socid;
-            $sql.= " ORDER BY $sortfield $sortorder ";
+            $sql.= $db->order($sortfield, $sortorder);
 
             //Calcul total qty and amount for global if full scan list
             $total_ht=0;
             $total_qty=0;
 			$totalrecords=0;
-            if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) {
+            if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) 
+            {
             	$result = $db->query($sql);
-            	if ($result) {
+            	if ($result) 
+            	{
             		$totalrecords = $db->num_rows($result);
-            		while ($objp = $db->fetch_object($result)) {
+            		while ($objp = $db->fetch_object($result)) 
+            		{
             			$total_ht+=$objp->total_ht;
             			$total_qty+=$objp->qty;
             		}
             	}
             }
 
-            $sql.= $db->plimit($conf->liste_limit +1, $offset);
+            $sql.= $db->plimit($conf->liste_limit + 1, $offset);
 
             $result = $db->query($sql);
             if ($result)
@@ -214,7 +218,7 @@ if ($id > 0 || ! empty($ref))
                 if ($num > 0)
 				{
                     $var=True;
-                    while ($i < $num && $i < $conf->liste_limit)
+                    while ($i < min($num,$conf->liste_limit))
 					{
                         $objp = $db->fetch_object($result);
                         $var=!$var;
diff --git a/htdocs/product/stats/facture_fournisseur.php b/htdocs/product/stats/facture_fournisseur.php
index 9b56cee75523b948fa351654c19a501434fe4bfa..5ce40658d0d7e6b2226583f86dac9b349a9a79ae 100644
--- a/htdocs/product/stats/facture_fournisseur.php
+++ b/htdocs/product/stats/facture_fournisseur.php
@@ -130,7 +130,7 @@ if ($id > 0 || ! empty($ref))
 
 		if ($user->rights->fournisseur->facture->lire)
 		{
-			$sql = "SELECT distinct s.nom as name, s.rowid as socid, s.code_client, f.ref, d.total_ht as total_ht,";
+			$sql = "SELECT DISTINCT s.nom as name, s.rowid as socid, s.code_client, f.ref, d.rowid, d.total_ht as total_ht,";
 			$sql .= " f.datef, f.paye, f.fk_statut as statut, f.rowid as facid, d.qty";
 			if (! $user->rights->societe->client->voir && ! $socid)
 				$sql .= ", sc.fk_soc, sc.fk_user ";
diff --git a/htdocs/product/stats/propal.php b/htdocs/product/stats/propal.php
index 690f9c8c4214882988f8ad26ea4b37e057b67f62..84d1ba72a80767d4b56c82107bdbbe3e68447c80 100644
--- a/htdocs/product/stats/propal.php
+++ b/htdocs/product/stats/propal.php
@@ -129,7 +129,7 @@ if ($id > 0 || ! empty($ref))
 		if ($user->rights->propale->lire) {
 			$sql = "SELECT DISTINCT s.nom as name, s.rowid as socid, p.rowid as propalid, p.ref, d.total_ht as amount,";
 			$sql .= " p.ref_client,";
-			$sql .= "p.datep, p.fk_statut as statut, d.qty";
+			$sql .= "p.datep, p.fk_statut as statut, d.rowid, d.qty";
 			if (! $user->rights->societe->client->voir && ! $socid)
 				$sql .= ", sc.fk_soc, sc.fk_user ";
 			$sql .= " FROM " . MAIN_DB_PREFIX . "societe as s";