diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php
index 650a7befa8188314934f7f20fbfe1edca6be9726..ead6840486ee2b9eaf3193e9fa11d81681618d8e 100644
--- a/htdocs/compta/facture/class/facture.class.php
+++ b/htdocs/compta/facture/class/facture.class.php
@@ -1941,20 +1941,23 @@ class Facture extends CommonObject
     {
         include_once(DOL_DOCUMENT_ROOT.'/core/lib/price.lib.php');
 
-        dol_syslog("Facture::UpdateLine $rowid, $desc, $pu, $qty, $remise_percent, $date_start, $date_end, $txtva, $txlocaltax1, $txlocaltax2, $price_base_type, $info_bits, $type", LOG_DEBUG);
+        dol_syslog("Facture::UpdateLine $rowid, $desc, $pu, $qty, $remise_percent, $date_start, $date_end, $txtva, $txlocaltax1, $txlocaltax2, $price_base_type, $info_bits, $type, $fk_parent_line", LOG_DEBUG);
 
         if ($this->brouillon)
         {
             $this->db->begin();
 
             // Clean parameters
-            $remise_percent=price2num($remise_percent);
-            $qty=price2num($qty);
-            if (! $qty) $qty=0;
-            $pu = price2num($pu);
-            $txtva=price2num($txtva);
-            $txlocaltax1=price2num($txlocaltax1);
-            $txlocaltax2=price2num($txlocaltax2);
+            if (empty($qty)) $qty=0;
+            if (empty($fk_parent_line) || $fk_parent_line < 0) $fk_parent_line=0;
+            
+            $remise_percent	= price2num($remise_percent);
+            $qty			= price2num($qty);
+            $pu 			= price2num($pu);
+            $txtva			= price2num($txtva);
+            $txlocaltax1	= price2num($txlocaltax1);
+            $txlocaltax2	= price2num($txlocaltax2);
+            
             // Check parameters
             if ($type < 0) return -1;
 
@@ -3593,7 +3596,6 @@ class FactureLigne
         if ($this->date_end) { $sql.= ",date_end='".$this->db->idate($this->date_end)."'"; }
         else { $sql.=',date_end=null'; }
         $sql.= ",product_type=".$this->product_type;
-        $sql.= ",rang='".$this->rang."'";
         $sql.= ",info_bits='".$this->info_bits."'";
         if (empty($this->skip_update_total))
         {
diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php
index 17a18a006fa450c2adebed4c1f3cb60793c0eba4..dbeaf148e0b582a550fd2949506264f5625bac5d 100644
--- a/htdocs/core/class/commonobject.class.php
+++ b/htdocs/core/class/commonobject.class.php
@@ -839,6 +839,8 @@ abstract class CommonObject
 		$sql.= ' WHERE '.$this->fk_element.'='.$this->id;
 		if (! $renum) $sql.= ' AND rang = 0';
 		if ($renum) $sql.= ' AND rang <> 0';
+		
+		dol_syslog(get_class($this)."::line_order sql=".$sql, LOG_DEBUG);
 		$resql = $this->db->query($sql);
 		if ($resql)
 		{
@@ -850,6 +852,8 @@ abstract class CommonObject
 			$sql = 'SELECT rowid FROM '.MAIN_DB_PREFIX.$this->table_element_line;
 			$sql.= ' WHERE '.$this->fk_element.' = '.$this->id;
 			$sql.= ' ORDER BY rang ASC, rowid '.$rowidorder;
+			
+			dol_syslog(get_class($this)."::line_order sql=".$sql, LOG_DEBUG);
 			$resql = $this->db->query($sql);
 			if ($resql)
 			{
@@ -910,6 +914,8 @@ abstract class CommonObject
 	{
 		$sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element_line.' SET rang  = '.$rang;
 		$sql.= ' WHERE rowid = '.$rowid;
+		
+		dol_syslog(get_class($this)."::updateRangOfLine sql=".$sql, LOG_DEBUG);
 		if (! $this->db->query($sql) )
 		{
 			dol_print_error($this->db);