diff --git a/htdocs/product/stats/commande.php b/htdocs/product/stats/commande.php
index f90235a143fadb1ee411c536becf4888609d5142..c95845191bf233d8af543d6b115e3bc79b35cdf0 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 3d117a7f40a8d089fd7e38c6336ba73782d75d6d..e0dca72864f1d3fbf18fe40ad5d78af948059f73 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 6fb09bffa8b3ebeb0fa95f908001fb968b2f738c..da39d5d67c121df186a927ce2d06ab07fe54767b 100644
--- a/htdocs/product/stats/facture.php
+++ b/htdocs/product/stats/facture.php
@@ -130,9 +130,9 @@ if ($id > 0 || ! empty($ref))
 
         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";
+            $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";
@@ -148,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)
@@ -217,7 +220,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 677bff934a73345b0c4a9c33e082ee5ce646c899..3d5cbcbe4552947dfcbaf48dda5983871c32025a 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 295487344fdb60a9938d17680facceb7f28f20a3..95c273929cd5b44841202ccfcda53d5f521a87d8 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";