Bienvenido a los foros %s

Foro comunidad hispana Dolibarr

Identificarse Registrarse

Listar Stock de productos por almacén

Cuestiones sobre cómo utilizar Dolibarr, ayudas sobre las funcionalidades o cualquier cuestión que no está relacionada con un error.
Avatar de Usuario
aitorxs
Almirante
Mensajes: 310
Registrado: Mar, 03/02/2015, 17:46

Listar Stock de productos por almacén

Mensaje por aitorxs »

Buenas tardes compañeros, no si ya lo habrán posteado, pero en la empresa donde trabajo me pidieron que mostrara el stock de acuerdo a los almacenes y después de batalla e logrado mostrar algo, daré una pequeña explicación espero me puedan entender.

Tendria que quedar así:

Imagen


editamos el archivo /product/class/product.class.php

en la funcion function load_stock linea 3416 agregamos el siguiente codigo:
$reel1 = round($row->reel, 1);
print '<td align="right">'.$reel1.'</td>';

quedando asi la funcion.

function load_stock()
{
$this->stock_reel = 0;
$this->stock_warehouse = array();

$sql = "SELECT ps.reel, ps.fk_entrepot, ps.pmp, ps.rowid";
$sql.= " FROM ".MAIN_DB_PREFIX."product_stock as ps";
$sql.= ", ".MAIN_DB_PREFIX."entrepot as w";
$sql.= " WHERE w.entity IN (".getEntity('stock', 1).")";
$sql.= " AND w.rowid = ps.fk_entrepot";
$sql.= " AND ps.fk_product = ".$this->id;

dol_syslog(get_class($this)."::load_stock", LOG_DEBUG);
$result = $this->db->query($sql);
if ($result)
{
$num = $this->db->num_rows($result);
$i=0;
if ($num > 0)
{
while ($i < $num)
{
$row = $this->db->fetch_object($result);
$this->stock_warehouse[$row->fk_entrepot] = new stdClass();
$this->stock_warehouse[$row->fk_entrepot]->real = $row->reel;
$this->stock_warehouse[$row->fk_entrepot]->pmp = $row->pmp;
$this->stock_warehouse[$row->fk_entrepot]->id = $row->rowid;
if ($this->hasbatch()) $this->stock_warehouse[$row->fk_entrepot]->detail_batch=Productbatch::findAll($this->db,$row->rowid,1);
$this->stock_reel+=$row->reel;
//MACHFREE SE AGREGO ESTA LINEAS PARA MOSTRAR EL STOCK POR CADA ALMACEN
$reel1 = round($row->reel, 1);
print '<td align="right">'.$reel1.'</td>';
$i++;

}
}
$this->db->free($result);

$this->load_virtual_stock(); // This also load stats_commande_fournisseur, ...

return 1;
}
else
{
$this->error=$this->db->lasterror();
return -1;
}
}

editamos el archivo /product/list.php en la linea 433 agregamos

if (! empty($arrayfields['p.stock']['checked'])) print_liste_field_titre($langs->trans("Stock DC"), $_SERVER["PHP_SELF"],"p.stock","",$param,'align="right"',$sortfield,$sortorder);

if (! empty($arrayfields['p.stock']['checked'])) print_liste_field_titre($langs->trans("Stock Obe"), $_SERVER["PHP_SELF"],"p.stock","",$param,'align="right"',$sortfield,$sortorder);



con esto deberia bastar para mostrar asi como en la imagen. alguna duda me la dicen y si se puede mejorar ell codigo seria mejor.
sistemas@machfree.com | http://www.machfree.com | Trujillo - Perú
*Si no respondo los mensajes....enviame un email ;)

bene
Soldado
Mensajes: 88
Registrado: Lun, 21/07/2014, 20:21

Mensaje por bene »

Que versión de dolibarr?

Avatar de Usuario
aitorxs
Almirante
Mensajes: 310
Registrado: Mar, 03/02/2015, 17:46

Mensaje por aitorxs »

En la versión 3.9.2 . Saludos
sistemas@machfree.com | http://www.machfree.com | Trujillo - Perú
*Si no respondo los mensajes....enviame un email ;)