diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index efd98488875..882cf7266fd 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -138,7 +138,9 @@ class Product extends CommonObject //! Contains detail of stock of product into each warehouse var $stock_warehouse=array(); - + + var $oldcopy; + var $oldcopy; @@ -405,7 +407,9 @@ class Product extends CommonObject global $langs, $conf; $error=0; - + + $this->db->begin(); + $this->db->begin(); // Verification parametres @@ -508,7 +512,7 @@ class Product extends CommonObject if ($result < 0) { $error++; $this->errors=$interface->errors; } // Fin appel triggers } - + if (! $error && (is_object($this->oldcopy) && $this->oldcopy->ref != $this->ref)) { // We remove directory @@ -527,7 +531,7 @@ class Product extends CommonObject } } } - + if (! $error) { $this->db->commit(); @@ -618,7 +622,26 @@ class Product extends CommonObject dol_syslog(get_class($this).'::delete error '.$this->error, LOG_ERR); } } - + + if (! $error) + { + // We remove directory + $ref = dol_sanitizeFileName($this->ref); + if ($conf->product->dir_output) + { + $dir = $conf->product->dir_output . "/" . $ref; + if (file_exists($dir)) + { + $res=@dol_delete_dir_recursive($dir); + if (! $res) + { + $this->error='ErrorFailToDeleteDir'; + $error++; + } + } + } + } + if (! $error) { // We remove directory @@ -2403,9 +2426,12 @@ class Product extends CommonObject { $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 = (".getEntity('warehouse', 1).")"; + $sql.= " AND w.rowid = ps.fk_entrepot"; + $sql.= " AND ps.fk_product = ".$this->id; dol_syslog(get_class($this)."::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 ca670fcba2a..c15d484aba8 100644 --- a/htdocs/product/stock/class/entrepot.class.php +++ b/htdocs/product/stock/class/entrepot.class.php @@ -76,6 +76,8 @@ class Entrepot extends CommonObject */ function create($user) { + global $conf; + // Si libelle non defini, erreur if ($this->libelle == '') { @@ -87,8 +89,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($now)."',".$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($now)."',".$user->id.",'".$this->db->escape($this->libelle)."')"; dol_syslog(get_class($this)."::create sql=".$sql); $result=$this->db->query($sql); @@ -99,7 +101,7 @@ class Entrepot extends CommonObject { $this->id = $id; - if ( $this->update($id, $user) > 0) + if ($this->update($id, $user) > 0) { $this->db->commit(); return $id; @@ -184,7 +186,6 @@ class Entrepot extends CommonObject */ function delete($user) { - $this->db->begin(); $sql = "DELETE FROM ".MAIN_DB_PREFIX."stock_mouvement"; @@ -338,7 +339,8 @@ class Entrepot extends CommonObject $sql = "SELECT rowid, label"; $sql.= " FROM ".MAIN_DB_PREFIX."entrepot"; - $sql.= " WHERE statut = ".$status; + $sql.= " WHERE entity IN (".getEntity('warehouse', 1).")"; + $sql.= " AND statut = ".$status; $result = $this->db->query($sql); $i = 0; @@ -363,13 +365,13 @@ class Entrepot extends CommonObject */ function nb_products() { - global $conf,$user; - $ret=array(); $sql = "SELECT sum(ps.reel) as nb, sum(ps.reel * ps.pmp) as value"; - $sql .= " FROM ".MAIN_DB_PREFIX."product_stock as ps, ".MAIN_DB_PREFIX."product as p"; - $sql .= " WHERE ps.fk_entrepot = ".$this->id." AND ps.fk_product=p.rowid"; + $sql.= " FROM ".MAIN_DB_PREFIX."product_stock as ps"; + $sql.= ", ".MAIN_DB_PREFIX."product as p"; + $sql.= " WHERE ps.fk_entrepot = ".$this->id; + $sql.= " AND ps.fk_product = p.rowid"; //print $sql; $result = $this->db->query($sql); diff --git a/htdocs/product/stock/product.php b/htdocs/product/stock/product.php index 44e887b73cc..b468e63e891 100644 --- a/htdocs/product/stock/product.php +++ b/htdocs/product/stock/product.php @@ -43,7 +43,7 @@ if (isset($_GET["id"]) || isset($_GET["ref"])) } $fieldid = isset($_GET["ref"])?'ref':'rowid'; if ($user->societe_id) $socid=$user->societe_id; -$result=restrictedArea($user,'produit&stock',$id,'product','','',$fieldid); +$result=restrictedArea($user,'produit&stock',$id,'product&product','','',$fieldid); $mesg = ''; @@ -214,6 +214,7 @@ if ($_GET["id"] || $_GET["ref"]) print ''; // Real stock + $product->load_stock(); print '