From 6bcf2be91b3dc0152bbbef3e8db9a379ab6f1a06 Mon Sep 17 00:00:00 2001
From: Regis Houssin <regis@dolibarr.fr>
Date: Thu, 26 Jul 2012 20:48:35 +0200
Subject: [PATCH] Fix: Bug #460 - Wrong entity assignment when creating a
 warehouse

---
 htdocs/product/class/product.class.php        | 11 ++++++++---
 htdocs/product/stock/class/entrepot.class.php |  6 ++++--
 htdocs/product/stock/product.php              |  1 +
 3 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php
index c44cbc65f1b..729a30b678a 100644
--- a/htdocs/product/class/product.class.php
+++ b/htdocs/product/class/product.class.php
@@ -2330,11 +2330,16 @@ class Product extends CommonObject
 	 */
 	function load_stock()
 	{
+		global $conf;
+
 		$this->stock_reel = 0;
 
-		$sql = "SELECT reel, fk_entrepot, pmp";
-		$sql.= " FROM ".MAIN_DB_PREFIX."product_stock";
-		$sql.= " WHERE fk_product = '".$this->id."'";
+		$sql = "SELECT ps.reel, ps.fk_entrepot, ps.pmp";
+		$sql.= " FROM ".MAIN_DB_PREFIX."product_stock as ps";
+		$sql.= ", ".MAIN_DB_PREFIX."entrepot as w";
+		$sql.= " WHERE w.entity = ".$conf->entity;
+		$sql.= " AND w.rowid = ps.fk_entrepot";
+		$sql.= " AND ps.fk_product = ".$this->id;
 
 		dol_syslog("Product::load_stock sql=".$sql);
 		$result = $this->db->query($sql) ;
diff --git a/htdocs/product/stock/class/entrepot.class.php b/htdocs/product/stock/class/entrepot.class.php
index aca3b3db5ba..396fe0a9779 100644
--- a/htdocs/product/stock/class/entrepot.class.php
+++ b/htdocs/product/stock/class/entrepot.class.php
@@ -70,6 +70,8 @@ class Entrepot extends CommonObject
 	 */
 	function create($user)
 	{
+		global $conf;
+
 		// Si libelle non defini, erreur
 		if ($this->libelle == '')
 		{
@@ -79,8 +81,8 @@ class Entrepot extends CommonObject
 
 		$this->db->begin();
 
-		$sql = "INSERT INTO ".MAIN_DB_PREFIX."entrepot (datec, fk_user_author, label)";
-		$sql .= " VALUES (".$this->db->idate(mktime()).",".$user->id.",'".$this->db->escape($this->libelle)."')";
+		$sql = "INSERT INTO ".MAIN_DB_PREFIX."entrepot (entity, datec, fk_user_author, label)";
+		$sql .= " VALUES (".$conf->entity.",'".$this->db->idate(mktime())."',".$user->id.",'".$this->db->escape($this->libelle)."')";
 
 		dol_syslog("Entrepot::create sql=".$sql);
 		$result=$this->db->query($sql);
diff --git a/htdocs/product/stock/product.php b/htdocs/product/stock/product.php
index f4e6eea03ad..e0409f0f624 100644
--- a/htdocs/product/stock/product.php
+++ b/htdocs/product/stock/product.php
@@ -209,6 +209,7 @@ if ($_GET["id"] || $_GET["ref"])
         print '</tr>';
 
         // Real stock
+        $product->load_stock();
 		print '<tr><td>'.$langs->trans("PhysicalStock").'</td>';
 		print '<td>'.$product->stock_reel;
 		if ($product->seuil_stock_alerte && ($product->stock_reel < $product->seuil_stock_alerte)) print ' '.img_warning($langs->trans("StockTooLow"));
-- 
GitLab