Fix: compatibility with multicompany

Conflicts:
	htdocs/product/class/product.class.php
This commit is contained in:
Regis Houssin 2012-07-02 15:46:31 +02:00
parent 1d5db424a1
commit 1f98a23587
3 changed files with 71 additions and 14 deletions

View File

@ -139,6 +139,8 @@ class Product extends CommonObject
//! Contains detail of stock of product into each warehouse
var $stock_warehouse=array();
var $oldcopy;
/**
* Constructor
@ -404,6 +406,8 @@ class Product extends CommonObject
$error=0;
$this->db->begin();
// Verification parametres
if (! $this->libelle) $this->libelle = 'MISSING LABEL';
@ -505,7 +509,35 @@ class Product extends CommonObject
// Fin appel triggers
}
return 1;
if (! $error && (is_object($this->oldcopy) && $this->oldcopy->ref != $this->ref))
{
// We remove directory
if ($conf->product->dir_output)
{
$olddir = $conf->product->dir_output . "/" . dol_sanitizeFileName($this->oldcopy->ref);
$newdir = $conf->product->dir_output . "/" . dol_sanitizeFileName($this->ref);
if (file_exists($olddir))
{
$res=@dol_move($olddir, $newdir);
if (! $res)
{
$this->error='ErrorFailToMoveDir';
$error++;
}
}
}
}
if (! $error)
{
$this->db->commit();
return 1;
}
else
{
$this->db->rollback();
return -$error;
}
}
else
{
@ -603,6 +635,25 @@ class Product extends CommonObject
}
}
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)
{
$this->db->rollback();
@ -2368,9 +2419,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);

View File

@ -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);

View File

@ -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 '</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"));