From 2c2bb366bd9e7b6bb955cd1a975dc1b0dd880d7a Mon Sep 17 00:00:00 2001
From: florian HENRY <florian.henry@atm-consulting.fr>
Date: Wed, 11 Jan 2017 09:19:07 +0100
Subject: [PATCH] fix : warehouse creation failed with mysql 5.7 (string 'NULL'
 instead of "NULL")

---
 htdocs/product/stock/class/entrepot.class.php | 84 +++++++++----------
 1 file changed, 42 insertions(+), 42 deletions(-)

diff --git a/htdocs/product/stock/class/entrepot.class.php b/htdocs/product/stock/class/entrepot.class.php
index a9057ca34ba..1b650a4e7bb 100644
--- a/htdocs/product/stock/class/entrepot.class.php
+++ b/htdocs/product/stock/class/entrepot.class.php
@@ -36,21 +36,21 @@ class Entrepot extends CommonObject
 	public $element='stock';
 	public $table_element='entrepot';
 	public $picto='stock';
-	
+
 	/**
 	 * Warehouse closed, inactive
 	 */
 	const STATUS_CLOSED = 0;
-	
+
 	/**
 	 * Warehouse open and operations for customer shipping, supplier dispatch, internal stock transfers/corrections allowed.
 	 */
 	const STATUS_OPEN_ALL = 1;
-	
+
 	/**
 	 * Warehouse open and operations for stock transfers/corrections allowed (not for customer shipping and supplier dispatch).
 	 */
-	const STATUS_OPEN_INTERNAL = 2;	
+	const STATUS_OPEN_INTERNAL = 2;
 
 	var $libelle;
 	var $description;
@@ -61,10 +61,10 @@ class Entrepot extends CommonObject
 	var $zip;
 	var $town;
 	var $fk_parent;
-	
+
 	// List of short language codes for status
 	var $statuts = array();
-	
+
 	/**
 	 *  Constructor
 	 *
@@ -85,7 +85,7 @@ class Entrepot extends CommonObject
 		{
 			$this->statuts[self::STATUS_OPEN_ALL] = 'Opened';
 		}
-		
+
 	}
 
 	/**
@@ -97,9 +97,9 @@ class Entrepot extends CommonObject
 	function create($user)
 	{
 		global $conf;
-		
+
 		$this->libelle = trim($this->libelle);
-		
+
 		// Si libelle non defini, erreur
 		if ($this->libelle == '')
 		{
@@ -112,7 +112,7 @@ class Entrepot extends CommonObject
 		$this->db->begin();
 
 		$sql = "INSERT INTO ".MAIN_DB_PREFIX."entrepot (entity, datec, fk_user_author, label, fk_parent)";
-		$sql .= " VALUES (".$conf->entity.",'".$this->db->idate($now)."',".$user->id.",'".$this->db->escape($this->libelle)."', ".($this->fk_parent > 0 ? $this->fk_parent : 'NULL').")";
+		$sql .= " VALUES (".$conf->entity.",'".$this->db->idate($now)."',".$user->id.",'".$this->db->escape($this->libelle)."', ".($this->fk_parent > 0 ? $this->fk_parent : "NULL").")";
 
 		dol_syslog(get_class($this)."::create", LOG_DEBUG);
 		$result=$this->db->query($sql);
@@ -161,19 +161,19 @@ class Entrepot extends CommonObject
 	function update($id, $user)
 	{
 	    if (empty($id)) $id = $this->id;
-	    
+
 		// Check if new parent is already a child of current warehouse
-		if(!empty($this->fk_parent)) 
+		if(!empty($this->fk_parent))
 		{
 			$TChildWarehouses = array($id);
 			$TChildWarehouses = $this->get_children_warehouses($this->id, $TChildWarehouses);
-			if(in_array($this->fk_parent, $TChildWarehouses)) 
+			if(in_array($this->fk_parent, $TChildWarehouses))
 			{
 				$this->error = 'ErrorCannotAddThisParentWarehouse';
 				return -2;
 			}
 		}
-		
+
 		$this->libelle=trim($this->libelle);
 		$this->description=trim($this->description);
 
@@ -186,7 +186,7 @@ class Entrepot extends CommonObject
 
 		$sql = "UPDATE ".MAIN_DB_PREFIX."entrepot ";
 		$sql .= " SET label = '" . $this->db->escape($this->libelle) ."'";
-		$sql .= ", fk_parent = " . (($this->fk_parent > 0) ? $this->fk_parent : 'NULL');
+		$sql .= ", fk_parent = " . (($this->fk_parent > 0) ? $this->fk_parent : "NULL");
 		$sql .= ", description = '" . $this->db->escape($this->description) ."'";
 		$sql .= ", statut = " . $this->statut;
 		$sql .= ", lieu = '" . $this->db->escape($this->lieu) ."'";
@@ -232,7 +232,7 @@ class Entrepot extends CommonObject
             if ($result < 0) { $error++; }
             // End call triggers
 		}
-		
+
 		$elements = array('stock_mouvement','product_stock','product_warehouse_properties');
 		foreach($elements as $table)
 		{
@@ -516,12 +516,12 @@ class Entrepot extends CommonObject
 	function LibStatut($statut,$mode=0)
 	{
 		global $langs;
-		
+
 		$langs->load('stocks');
-		
+
 		$picto = 'statut5';
 		$label = $langs->trans($this->statuts[$statut]);
-		
+
 
 		if ($mode == 0)
 		{
@@ -569,10 +569,10 @@ class Entrepot extends CommonObject
 		$langs->load("stocks");
 
         if (! empty($conf->dol_no_mouse_hover)) $notooltip=1;   // Force disable tooltips
-		
+
         $result='';
         $label = '';
-        
+
         $label = '<u>' . $langs->trans("ShowWarehouse").'</u>';
         $label.= '<br><b>' . $langs->trans('Ref') . ':</b> ' . (empty($this->label)?$this->libelle:$this->label);
         if (! empty($this->lieu))
@@ -591,11 +591,11 @@ class Entrepot extends CommonObject
             $linkclose.= ' title="'.dol_escape_htmltag($label, 1).'"';
             $linkclose.=' class="classfortooltip"';
         }
-        
+
         $linkstart = '<a href="'.$url.'"';
         $linkstart.=$linkclose.'>';
         $linkend='</a>';
-            
+
         if ($withpicto) $result.=($link.img_object(($notooltip?'':$label), 'stock', ($notooltip?'':'class="classfortooltip"'), 0, 0, $notooltip?0:1).$linkend.' ');
 		$result.=$linkstart.($showfullpath ? $this->get_full_arbo() : (empty($this->label)?$this->libelle:$this->label)).$linkend;
 		return $result;
@@ -628,60 +628,60 @@ class Entrepot extends CommonObject
         $this->country_id=1;
         $this->country_code='FR';
     }
-	
+
 	/**
 	 *	Return full path to current warehouse
 	 *
-	 *	@return		string	String full path to current warehouse separated by " >> " 
+	 *	@return		string	String full path to current warehouse separated by " >> "
 	 */
-	function get_full_arbo() 
+	function get_full_arbo()
 	{
         global $user,$langs,$conf;
-        
+
         $TArbo = array(empty($this->label)?$this->libelle:$this->label);
-        
+
         $protection=100; // We limit depth of warehouses to 100
-        
+
         $warehousetmp = new Entrepot($this->db);
-        
-        $parentid = $this->fk_parent;       // If parent_id not defined on current object, we do not start consecutive searches of parents 
+
+        $parentid = $this->fk_parent;       // If parent_id not defined on current object, we do not start consecutive searches of parents
         $i=0;
-        while ($parentid > 0 && $i < $protection) 
+        while ($parentid > 0 && $i < $protection)
         {
             $sql = 'SELECT fk_parent FROM '.MAIN_DB_PREFIX.'entrepot WHERE rowid = '.$parentid;
             $resql = $this->db->query($sql);
-            if ($resql) 
+            if ($resql)
             {
                 $objarbo = $this->db->fetch_object($resql);
                 if ($objarbo)
                 {
                 	$warehousetmp->fetch($parentid);
                 	$TArbo[] = $warehousetmp->label;
-                 	$parentid = $objarbo->fk_parent; 
+                 	$parentid = $objarbo->fk_parent;
                 }
                 else break;
             }
             else dol_print_error($this->db);
-            
+
             $i++;
         }
-        
+
         return implode(' >> ', array_reverse($TArbo));
 	}
-	
+
 	/**
 	 * Return array of children warehouses ids from $id warehouse (recursive function)
-	 * 
+	 *
 	 * @param	int		$id					id parent warehouse
 	 * @param	array()	$TChildWarehouses	array which will contain all children (param by reference)
 	 * @return	array()	$TChildWarehouses	array which will contain all children
 	 */
 	function get_children_warehouses($id, &$TChildWarehouses) {
-		
+
 		$sql = 'SELECT rowid
 				FROM '.MAIN_DB_PREFIX.'entrepot
 				WHERE fk_parent = '.$id;
-		
+
 		$resql = $this->db->query($sql);
 		if($resql) {
 			while($res = $this->db->fetch_object($resql)) {
@@ -689,9 +689,9 @@ class Entrepot extends CommonObject
 				$this->get_children_warehouses($res->rowid, $TChildWarehouses);
 			}
 		}
-		
+
 		return $TChildWarehouses;
-		
+
 	}
 
 }
-- 
GitLab