Fix: Bad filters on stock movement list

This commit is contained in:
Laurent Destailleur 2012-02-26 13:32:16 +01:00
parent 24422afe44
commit 9270e4603b
2 changed files with 42 additions and 53 deletions

View File

@ -28,10 +28,8 @@ require_once(DOL_DOCUMENT_ROOT."/core/class/commonobject.class.php");
/** /**
* \class Entrepot * Class to manage warehouses
* \brief Classe permettant la gestion des entrepots
*/ */
class Entrepot extends CommonObject class Entrepot extends CommonObject
{ {
public $element='label'; public $element='label';
@ -52,11 +50,11 @@ class Entrepot extends CommonObject
/** /**
* Constructor * Constructor
* *
* @param DoliDB $DB Database handler * @param DoliDB $db Database handler
*/ */
function Entrepot($DB) function __construct($db)
{ {
$this->db = $DB; $this->db = $db;
// List of short language codes for status // List of short language codes for status
$this->statuts[0] = 'Closed2'; $this->statuts[0] = 'Closed2';
@ -78,12 +76,14 @@ class Entrepot extends CommonObject
return 0; return 0;
} }
$now=dol_now();
$this->db->begin(); $this->db->begin();
$sql = "INSERT INTO ".MAIN_DB_PREFIX."entrepot (datec, fk_user_author, label)"; $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 .= " VALUES (".$this->db->idate($now).",".$user->id.",'".$this->db->escape($this->libelle)."')";
dol_syslog("Entrepot::create sql=".$sql); dol_syslog(get_class($this)."::create sql=".$sql);
$result=$this->db->query($sql); $result=$this->db->query($sql);
if ($result) if ($result)
{ {
@ -99,21 +99,21 @@ class Entrepot extends CommonObject
} }
else else
{ {
dol_syslog("Entrepot::Create return -3"); dol_syslog(get_class($this)."::create return -3");
$this->db->rollback(); $this->db->rollback();
return -3; return -3;
} }
} }
else { else {
$this->error="Failed to get insert id"; $this->error="Failed to get insert id";
dol_syslog("Entrepot::Create return -2"); dol_syslog(get_class($this)."::create return -2");
return -2; return -2;
} }
} }
else else
{ {
$this->error=$this->db->error(); $this->error=$this->db->error();
dol_syslog("Entrepot::Create Error ".$this->db->error()); dol_syslog(get_class($this)."::create Error ".$this->db->error());
$this->db->rollback(); $this->db->rollback();
return -1; return -1;
} }
@ -153,7 +153,7 @@ class Entrepot extends CommonObject
$this->db->begin(); $this->db->begin();
dol_syslog("Entrepot::update sql=".$sql); dol_syslog(get_class($this)."::update sql=".$sql);
$resql=$this->db->query($sql); $resql=$this->db->query($sql);
if ($resql) if ($resql)
{ {
@ -164,7 +164,7 @@ class Entrepot extends CommonObject
{ {
$this->db->rollback(); $this->db->rollback();
$this->error=$this->db->lasterror(); $this->error=$this->db->lasterror();
dol_syslog("Entrepot::update ".$this->error, LOG_ERR); dol_syslog(get_class($this)."::update ".$this->error, LOG_ERR);
return -1; return -1;
} }
} }
@ -196,7 +196,7 @@ class Entrepot extends CommonObject
$sql = "DELETE FROM ".MAIN_DB_PREFIX."entrepot"; $sql = "DELETE FROM ".MAIN_DB_PREFIX."entrepot";
$sql.= " WHERE rowid = " . $this->id; $sql.= " WHERE rowid = " . $this->id;
dol_syslog("Entrepot::delete sql=".$sql); dol_syslog(get_class($this)."::delete sql=".$sql);
$resql=$this->db->query($sql); $resql=$this->db->query($sql);
if ($resql) if ($resql)
{ {
@ -207,7 +207,7 @@ class Entrepot extends CommonObject
{ {
$this->db->rollback(); $this->db->rollback();
$this->error=$this->db->lasterror(); $this->error=$this->db->lasterror();
dol_syslog("Entrepot::delete ".$this->error, LOG_ERR); dol_syslog(get_class($this)."::delete ".$this->error, LOG_ERR);
return -1; return -1;
} }
} }
@ -215,7 +215,7 @@ class Entrepot extends CommonObject
{ {
$this->db->rollback(); $this->db->rollback();
$this->error=$this->db->lasterror(); $this->error=$this->db->lasterror();
dol_syslog("Entrepot::delete ".$this->error, LOG_ERR); dol_syslog(get_class($this)."::delete ".$this->error, LOG_ERR);
return -1; return -1;
} }
@ -234,7 +234,7 @@ class Entrepot extends CommonObject
$sql .= " FROM ".MAIN_DB_PREFIX."entrepot"; $sql .= " FROM ".MAIN_DB_PREFIX."entrepot";
$sql .= " WHERE rowid = ".$id; $sql .= " WHERE rowid = ".$id;
dol_syslog("Entrepot::fetch sql=".$sql); dol_syslog(get_class($this)."::fetch sql=".$sql);
$result = $this->db->query($sql); $result = $this->db->query($sql);
if ($result) if ($result)
{ {
@ -254,25 +254,13 @@ class Entrepot extends CommonObject
$this->town = $obj->town; $this->town = $obj->town;
$this->country_id = $obj->country_id; $this->country_id = $obj->country_id;
if ($this->country_id) include_once(DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php');
{ $tmp=getCountry($this->country_id,'all');
$sqlp = "SELECT code,libelle from ".MAIN_DB_PREFIX."c_pays where rowid = ".$this->country_id; $this->pays=$tmp['label'];
$resql=$this->db->query($sqlp); $this->pays_code=$tmp['code'];
if ($resql) $this->country=$tmp['label'];
{ $this->country_code=$tmp['code'];
$objp = $this->db->fetch_object($resql);
}
else
{
dol_print_error($this->db);
}
$this->pays=$objp->libelle;
$this->pays_code=$objp->code;
$this->country=$objp->libelle;
$this->country_code=$objp->code;
}
$this->db->free($result);
return 1; return 1;
} }
else else

View File

@ -36,6 +36,7 @@ $langs->load("stocks");
if (!$user->rights->produit->lire) accessforbidden(); if (!$user->rights->produit->lire) accessforbidden();
$id=GETPOST('id','int');
$idproduct = isset($_GET["idproduct"])?$_GET["idproduct"]:$_PRODUCT["idproduct"]; $idproduct = isset($_GET["idproduct"])?$_GET["idproduct"]:$_PRODUCT["idproduct"];
$year = isset($_GET["year"])?$_GET["year"]:$_POST["year"]; $year = isset($_GET["year"])?$_GET["year"]:$_POST["year"];
$month = isset($_GET["month"])?$_GET["month"]:$_POST["month"]; $month = isset($_GET["month"])?$_GET["month"]:$_POST["month"];
@ -79,16 +80,16 @@ $sql.= " e.label as stock, e.rowid as entrepot_id,";
$sql.= " m.rowid as mid, m.value, m.datem, m.fk_user_author, m.label,"; $sql.= " m.rowid as mid, m.value, m.datem, m.fk_user_author, m.label,";
$sql.= " u.login"; $sql.= " u.login";
$sql.= " FROM (".MAIN_DB_PREFIX."entrepot as e,"; $sql.= " FROM (".MAIN_DB_PREFIX."entrepot as e,";
$sql.= " ".MAIN_DB_PREFIX."stock_mouvement as m,"; $sql.= " ".MAIN_DB_PREFIX."product as p,";
$sql.= " ".MAIN_DB_PREFIX."product as p)"; $sql.= " ".MAIN_DB_PREFIX."stock_mouvement as m)";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."user as u ON m.fk_user_author = u.rowid"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."user as u ON m.fk_user_author = u.rowid";
$sql.= " WHERE m.fk_product = p.rowid"; $sql.= " WHERE m.fk_product = p.rowid";
$sql.= " AND m.fk_entrepot = e.rowid"; $sql.= " AND m.fk_entrepot = e.rowid";
$sql.= " AND e.entity = ".$conf->entity; $sql.= " AND e.entity = ".$conf->entity;
if (empty($conf->global->STOCK_SUPPORTS_SERVICES)) $sql.= " AND p.fk_product_type = 0"; if (empty($conf->global->STOCK_SUPPORTS_SERVICES)) $sql.= " AND p.fk_product_type = 0";
if ($_GET["id"]) if ($id)
{ {
$sql.= " AND e.rowid ='".$_GET["id"]."'"; $sql.= " AND e.rowid ='".$id."'";
} }
if ($month > 0) if ($month > 0)
{ {
@ -119,7 +120,7 @@ if (! empty($search_user))
} }
if (! empty($_GET['idproduct'])) if (! empty($_GET['idproduct']))
{ {
$sql.= " AND p.rowid = '".$_GET['idproduct']."'"; $sql.= " AND p.rowid = '".$idproduct."'";
} }
$sql.= $db->order($sortfield,$sortorder); $sql.= $db->order($sortfield,$sortorder);
$sql.= $db->plimit($conf->liste_limit+1, $offset); $sql.= $db->plimit($conf->liste_limit+1, $offset);
@ -139,7 +140,7 @@ if ($resql)
if ($_GET["id"]) if ($_GET["id"])
{ {
$entrepot = new Entrepot($db); $entrepot = new Entrepot($db);
$result = $entrepot->fetch($_GET["id"]); $result = $entrepot->fetch($id);
if ($result < 0) if ($result < 0)
{ {
dol_print_error($db); dol_print_error($db);
@ -156,7 +157,7 @@ if ($resql)
/* /*
* Show tab only if we ask a particular warehouse * Show tab only if we ask a particular warehouse
*/ */
if ($_GET["id"]) if ($id)
{ {
$head = stock_prepare_head($entrepot); $head = stock_prepare_head($entrepot);
@ -180,18 +181,18 @@ if ($resql)
print $entrepot->address; print $entrepot->address;
print '</td></tr>'; print '</td></tr>';
// Ville // Town
print '<tr><td width="25%">'.$langs->trans('Zip').'</td><td width="25%">'.$entrepot->cp.'</td>'; print '<tr><td width="25%">'.$langs->trans('Zip').'</td><td width="25%">'.$entrepot->zip.'</td>';
print '<td width="25%">'.$langs->trans('Town').'</td><td width="25%">'.$entrepot->ville.'</td></tr>'; print '<td width="25%">'.$langs->trans('Town').'</td><td width="25%">'.$entrepot->town.'</td></tr>';
// Country // Country
print '<tr><td>'.$langs->trans('Country').'</td><td colspan="3">'; print '<tr><td>'.$langs->trans('Country').'</td><td colspan="3">';
$img=picto_from_langcode($entrepot->country_code); $img=picto_from_langcode($entrepot->country_code);
print ($img?$img.' ':''); print ($img?$img.' ':'');
print $entrepot->pays; print $entrepot->country;
print '</td></tr>'; print '</td></tr>';
// Statut // Status
print '<tr><td>'.$langs->trans("Status").'</td><td colspan="3">'.$entrepot->getLibStatut(4).'</td></tr>'; print '<tr><td>'.$langs->trans("Status").'</td><td colspan="3">'.$entrepot->getLibStatut(4).'</td></tr>';
$calcproducts=$entrepot->nb_products(); $calcproducts=$entrepot->nb_products();
@ -207,7 +208,7 @@ if ($resql)
print "</td></tr>"; print "</td></tr>";
// Last movement // Last movement
$sql = "SELECT max(m.datem) as datem"; $sql = "SELECT MAX(m.datem) as datem";
$sql .= " FROM ".MAIN_DB_PREFIX."stock_mouvement as m"; $sql .= " FROM ".MAIN_DB_PREFIX."stock_mouvement as m";
$sql .= " WHERE m.fk_entrepot = '".$entrepot->id."'"; $sql .= " WHERE m.fk_entrepot = '".$entrepot->id."'";
$resqlbis = $db->query($sql); $resqlbis = $db->query($sql);
@ -238,7 +239,7 @@ if ($resql)
} }
$param=''; $param='';
if ($_GET["id"]) $param.='&id='.$_GET["id"]; if ($id) $param.='&id='.$id;
if ($search_movement) $param.='&search_movement='.urlencode($search_movement); if ($search_movement) $param.='&search_movement='.urlencode($search_movement);
if ($search_product) $param.='&search_product='.urlencode($search_product); if ($search_product) $param.='&search_product='.urlencode($search_product);
if ($search_warehouse) $param.='&search_warehouse='.urlencode($search_warehouse); if ($search_warehouse) $param.='&search_warehouse='.urlencode($search_warehouse);
@ -246,7 +247,7 @@ if ($resql)
if ($snom) $param.='&snom='.urlencode($snom); if ($snom) $param.='&snom='.urlencode($snom);
if ($search_user) $param.='&search_user='.urlencode($search_user); if ($search_user) $param.='&search_user='.urlencode($search_user);
if ($idproduct > 0) $param.='&idproduct='.$idproduct; if ($idproduct > 0) $param.='&idproduct='.$idproduct;
if ($_GET["id"]) print_barre_liste($texte, $page, "mouvement.php", $param, $sortfield, $sortorder,'',$num,0,''); if ($id) print_barre_liste($texte, $page, "mouvement.php", $param, $sortfield, $sortorder,'',$num,0,'');
else print_barre_liste($texte, $page, "mouvement.php", $param, $sortfield, $sortorder,'',$num); else print_barre_liste($texte, $page, "mouvement.php", $param, $sortfield, $sortorder,'',$num);
print '<table class="noborder" width="100%">'; print '<table class="noborder" width="100%">';
@ -255,20 +256,20 @@ if ($resql)
print_liste_field_titre($langs->trans("Date"),$_SERVER["PHP_SELF"], "m.datem","",$param,"",$sortfield,$sortorder); print_liste_field_titre($langs->trans("Date"),$_SERVER["PHP_SELF"], "m.datem","",$param,"",$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Label"),$_SERVER["PHP_SELF"], "m.label","",$param,"",$sortfield,$sortorder); print_liste_field_titre($langs->trans("Label"),$_SERVER["PHP_SELF"], "m.label","",$param,"",$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Product"),$_SERVER["PHP_SELF"], "p.ref","",$param,"",$sortfield,$sortorder); print_liste_field_titre($langs->trans("Product"),$_SERVER["PHP_SELF"], "p.ref","",$param,"",$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Warehouse"),$_SERVER["PHP_SELF"], "s.label","",$param,"",$sortfield,$sortorder); print_liste_field_titre($langs->trans("Warehouse"),$_SERVER["PHP_SELF"], "e.label","",$param,"",$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Author"),$_SERVER["PHP_SELF"], "m.fk_user_author","",$param,"",$sortfield,$sortorder); print_liste_field_titre($langs->trans("Author"),$_SERVER["PHP_SELF"], "m.fk_user_author","",$param,"",$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Units"),$_SERVER["PHP_SELF"], "m.value","",$param,'align="right"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Units"),$_SERVER["PHP_SELF"], "m.value","",$param,'align="right"',$sortfield,$sortorder);
print "</tr>\n"; print "</tr>\n";
// Lignes des champs de filtre // Lignes des champs de filtre
print '<form method="get" action="'.$_SERVER["PHP_SELF"].'">'; print '<form method="get" action="'.$_SERVER["PHP_SELF"].'">';
if ($id) print '<input type="hidden" name="id" value="'.$id.'">';
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
print '<td class="liste_titre" valign="right">'; print '<td class="liste_titre" valign="right">';
print $langs->trans('Month').': <input class="flat" type="text" size="2" maxlength="2" name="month" value="'.$month.'">'; print $langs->trans('Month').': <input class="flat" type="text" size="2" maxlength="2" name="month" value="'.$month.'">';
print '&nbsp;'.$langs->trans('Year').': '; print '&nbsp;'.$langs->trans('Year').': ';
$max_year = date("Y"); $syear = GETPOST('year')?GETPOST('year'):-1;
$syear = $year;
$formother->select_year($syear,'year',1, 20, 5); $formother->select_year($syear,'year',1, 20, 5);
print '</td>'; print '</td>';
// Label of movement // Label of movement