diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php
index 3cc72ac9b97286e3d4e0d73ba7e7013247a2d8ca..fce31e31923c5b68409c0897e86a34925d6e04d6 100644
--- a/htdocs/product/class/product.class.php
+++ b/htdocs/product/class/product.class.php
@@ -666,25 +666,45 @@ class Product extends CommonObject
                 $org->fetch($this->id);
                 $this->oldcopy=$org;
             }
-            // test if batch management is activated on existing product
+            
+            // Test if batch management is activated on existing product
+            // If yes, we create missing entries into product_batch
             if ($this->hasbatch() && !$this->oldcopy->hasbatch())
             {
+                $valueforundefinedlot = 'Undefined';
+
+                dol_syslog("Flag batch of product id=".$this->id." is set to ON, so we will create missing records into product_batch");
+
                 $this->load_stock();
-                foreach ($this->stock_warehouse as $idW => $ObjW)
+                foreach ($this->stock_warehouse as $idW => $ObjW)   // For each warehouse where we have stocks defined for this product (for each lines in product_stock)
                 {
                     $qty_batch = 0;
-                    foreach ($ObjW->detail_batch as $detail)
+                    foreach ($ObjW->detail_batch as $detail)    // Each lines of detail in product_batch of the current $ObjW = product_stock
                     {
+                        if ($detail->batch == $valueforundefinedlot || $detail->batch == 'Undefined') 
+                        {
+                            // We discard this line, we will create it later
+                            $sqlclean="DELETE FROM ".MAIN_DB_PREFIX."product_batch WHERE batch in('Undefined', '".$valueforundefinedlot."') AND fk_product_stock = ".$ObjW->id;
+                            $result = $this->db->query($sqlclean);
+                            if (! $result)
+                            {
+                                dol_print_error($this->db);
+                                exit;
+                            }
+                            continue;
+                        }
+                    
                         $qty_batch += $detail->qty;
                     }
-                    // Quantities in batch details are not same same as stock quantity
-                    // So we add a default batch record
+                    // Quantities in batch details are not same as stock quantity,
+                    // so we add a default batch record to complete and get same qty in parent and child table
                     if ($ObjW->real <> $qty_batch)
                     {
                         $ObjBatch = new Productbatch($this->db);
-                        $ObjBatch->batch = $langs->trans('BatchDefaultNumber');
-                        $ObjBatch->qty = $ObjW->real - $qty_batch;
+                        $ObjBatch->batch = $valueforundefinedlot; 
+                        $ObjBatch->qty = ($ObjW->real - $qty_batch);
                         $ObjBatch->fk_product_stock = $ObjW->id;
+
                         if ($ObjBatch->create($user,1) < 0)
                         {
                             $error++;
@@ -693,6 +713,7 @@ class Product extends CommonObject
                     }
                 }
             }
+
 	        // For automatic creation
 	        if ($this->barcode == -1) $this->barcode = $this->get_barcode($this,$this->barcode_type_code);