/** * * Ver la lista de productos y sus existencias, se puede filtrar por empresa, sucursal, almac?n, y lote. Se puede ordenar por los atributos de producto. * * @param existencia_mayor_que float Se regresaran los productos cuya existencia sea mayor a la especificada por este valor * @param existencia_igual_que float Se regresaran los productos cuya existencia sea igual a la especificada por este valor * @param existencia_menor_que float Se regresaran los productos cuya existencia sea menor a la especificada por este valor * @param id_empresa int Id de la empresa de la cual se vern los productos. * @param id_sucursal int Id de la sucursal de la cual se vern los productos. * @param id_almacen int Id del almacen del cual se vern los productos. * @param activo bool Si es true, mostrar solo los productos que estn activos, si es false mostrar solo los productos que no lo sean. * @param id_lote int Id del lote del cual se veran los productos en existencia * @return existecias json Lista de existencias * */ public static function Existencias($id_almacen = null, $id_empresa = null, $id_producto = null, $id_sucursal = null) { $e = AlmacenDAO::Existencias(); return array("resultados" => $e, "numero_de_resultados" => sizeof($e)); $daoProductos = ProductoDAO::getAll(); $aOut = array(); $daoAlmacenes = AlmacenDAO::getAll(); for ($iProd = 0; $iProd < sizeof($daoProductos); $iProd++) { //por cada almacen for ($iAl = 0; $iAl < sizeof($daoAlmacenes); $iAl++) { //buscar sus lotes } array_push($aOut, $daoProductos[$iProd]->asArray()); } return array("numero_de_resultados" => sizeof($aOut), "resultados" => $aOut); //Si se recibe un id producto, solo se listan las existencias de dicho producto, se puede combinar con //los demas parametros. Si no se recibe ningun otro, se realiza un acumulado de este producto en todos los almacenes. // //Si se recibe un id almacen, solo se listan las existencias de dicho almacen // //Si se recibe la variable id_empresa o id_sucursal, se listara un acumulado de todos los productos //con las cantidades de productos de los diferentes almacenes dentro de ella // //Cuando se recibe alguno de ellos, primero se consiguen todos los almacenes que le pertencen, despues //se consiguen todos los productos de cada almacen y se guardan en un arreglo temporal que despues es ordenado. //EL arreglo ordenado es el que se envia. // //Si no se recibe ningun parametro, se listaran todos los productos existentes en todos los almacenes $productos_almacenes = array(); //Si solo se especifica un producto, se regresa un arreglo con las sucursales donde esta ese producto y //la cantidad total en cada una if (!is_null($id_producto) && is_null($id_almacen) && is_null($id_empresa) && is_null($id_sucursal)) { //Se obtienen todas las sucursales y se llama recursivamente a este metodo $sucursales = SucursalDAO::search(new Sucursal(array("activa" => 1))); $result = array(); foreach ($sucursales as $sucursal) { $p_a = self::Existencias(null, null, $id_producto, $sucursal->getIdSucursal()); if ($p_a["numero_de_resultados"] > 0) { foreach ($p_a["resultados"] as $p) { $result["id_sucursal"] = $sucursal->getIdSucursal(); $suc = SucursalDAO::getByPK($sucursal->getIdSucursal()); $result["nombre_sucursal"] = $suc->getDescripcion(); $result["id_producto"] = $p->getIdProducto(); $result["id_unidad"] = $p->getIdUnidad(); $result["cantidad"] = $p->getCantidad(); array_push($productos_almacenes, $result); } } } } else { if (!is_null($id_almacen)) { //Se buscan los registros de productos que cumplan con el almacen y con el producto recibidos $productos_almacenes = LoteProductoDAO::search(new LoteProducto(array("id_almacen" => $id_almacen, "id_producto" => $id_producto))); } else { if (!is_null($id_empresa)) { //Se obtienen todos los almacenes de la empresa $almacenes_empresa = AlmacenDAO::search(new Almacen(array("id_empresa" => $id_empresa))); $productos_almacenes_empresa = array(); //Se recorre cada almacen y se obtiene un arreglo de sus productos, para poder agruparlos, tenemos que seacarlos //de su arreglo y ponerlos en un arreglo general foreach ($almacenes_empresa as $almacen_empresa) { //Se obtiene el arreglo de productos $productos_almacen_empresa = LoteProductoDAO::search(new LoteProducto(array("id_almacen" => $almacen_empresa->getIdAlmacen(), "id_producto" => $id_producto))); //Se vacía el arreglo en uno general foreach ($productos_almacen_empresa as $producto_almacen_empresa) { array_push($productos_almacenes_empresa, $producto_almacen_empresa); } } //Se agrupan los productos iguales $productos_almacenes = self::AgruparProductos($productos_almacenes_empresa); } else { if (!is_null($id_sucursal)) { //Se obtienen todos los almacenes de la sucursal $almacenes_sucursal = AlmacenDAO::search(new Almacen(array("id_sucursal" => $id_sucursal))); $productos_almacenes_sucursal = array(); //Se recorre cada almacen y se obtiene un arreglo de sus productos, para poder agruparlos, tenemos que sacarlos //de su arreglo y ponerlos en un arreglo general foreach ($almacenes_sucursal as $almacen_sucursal) { //Se obtiene el arreglo de productos $productos_almacen_sucursal = LoteProductoDAO::search(new LoteProducto(array("id_almacen" => $almacen_sucursal->getIdAlmacen(), "id_producto" => $id_producto))); //Se vacía el arreglo en uno general foreach ($productos_almacen_sucursal as $producto_almacen_sucursal) { array_push($productos_almacenes_sucursal, $producto_almacen_sucursal); } } //Se agrupan los productos iguales $productos_almacenes = self::AgruparProductos($productos_almacenes_sucursal); } else { //Se obtienen todos los almacenes $almacenes = AlmacenDAO::getAll(); $productos_almacen = array(); //Se recorre cada almacen y se obtiene un arreglo de sus productos, para poder agruparlos, tenemos que sacarlos //de su arreglo y ponerlos en un arreglo general foreach ($almacenes as $almacen) { //Se obtiene el arreglo de productos $productos_a = LoteProductoDAO::search(new LoteProducto(array("id_almacen" => $almacen->getIdAlmacen(), "id_producto" => $id_producto))); //Se vacía el arreglo en uno general foreach ($productos_a as $p_a) { array_push($productos_almacen, $p_a); } } //Se agrupan los productos iguales $productos_almacenes = self::AgruparProductos($productos_almacen); } } } } Logger::log("Se listan " . count($productos_almacenes) . " registros"); $existencias = array("resultados" => $productos_almacenes, "numero_de_resultados" => count($productos_almacenes)); return $existencias; }
/** * *Se puede ordenar por los atributos de producto. * * @param activo bool Si es true, mostrar solo los productos que estn activos, si es false mostrar solo los productos que no lo sean. * @param id_lote int Id del lote del cual se vern sus productos. * @param id_almacen int Id del almacen del cual se vern sus productos. * @param id_empresa int Id de la empresa de la cual se vern los productos. * @param id_sucursal int Id de la sucursal de la cual se vern los productos. * @return productos json Objeto que contendr� el arreglo de productos en inventario. **/ public static function Lista($activo = null, $compra_en_mostrador = null, $id_almacen = null, $id_empresa = null, $metodo_costeo = null) { Logger::log("Listando los productos"); $productos = array(); //Se verifica si se reciben parametros o no para usar el metodo getAll o search $parametros = false; if (!is_null($activo) || !is_null($compra_en_mostrador) || !is_null($metodo_costeo)) { Logger::log("Se recibieron parametros, se listan los productos en rango"); //Si se recibe el parametro id_empresa, se traen los productos de esa empresa y se intersectan //con los que cumplen los demas parametros. Si no se recibe, se busca el parametro id_almacen // //Si se recibe el parametro id_almacen, se traen los productos de ese almacen y se intersectan //con los que cumplen los demas parametros. Si no se recibe, la interseccion se hara con todos los productos $productos1 = array(); $productos2 = array(); if (!is_null($id_empresa)) { $productos_empresa = ProductoEmpresaDAO::search(new ProductoEmpresa(array("id_empresa" => $id_empresa))); foreach ($productos_empresa as $p_e) { array_push($productos1, ProductoDAO::getByPK($p_e->getIdProducto())); } //$productos_empresa as $p_e } else { if (!is_null($id_almacen)) { $productos_almacen = ProductoAlmacenDAO::search(new ProductoAlmacen(array("id_almacen" => $id_almacen))); foreach ($productos_almacen as $p_a) { array_push($productos1, ProductoDAO::getByPK($p_a->getIdProducto())); } //$productos_almacen as $p_a } else { $productos1 = ProductoDAO::getAll(); } } $producto_criterio = new Producto(array("activo" => $activo, "compra_en_mostrador" => $compra_en_mostrador, "metodo_costeo" => $metodo_costeo)); $productos2 = ProductoDAO::search($producto_criterio); $productos = array_intersect($productos1, $productos2); } else { Logger::log("No se recibieron parametros, se listan todos los productos"); if (!is_null($id_empresa)) { $productos_empresa = ProductoEmpresaDAO::search(new ProductoEmpresa(array("id_empresa" => $id_empresa))); foreach ($productos_empresa as $p_e) { array_push($productos, ProductoDAO::getByPK($p_e->getIdProducto())); } //$productos_empresa as $p_e } else { if (!is_null($id_almacen)) { $productos_almacen = ProductoAlmacenDAO::search(new ProductoAlmacen(array("id_almacen" => $id_almacen))); foreach ($productos_almacen as $p_a) { array_push($productos, ProductoDAO::getByPK($p_a->getIdProducto())); } //$productos_almacen as $p_a } else { $productos = ProductoDAO::getAll(); } } } Logger::log("Lista obtenida exitosamente con " . count($productos) . " elementos"); return $productos; }
//backwards compatibility "existenciasOriginales" => $producto['cantidad'], "existenciasProcesadas" => 0, // estos precios si vienen de la tabla de // actualizacion de precio "precioIntersucursal" => $p->getPrecio(), "precioIntersucursalProcesado" => $p->getPrecio() )); } $json = json_encode($json); printf('{ "success": true, "hash" : "%s" , "datos": %s }', md5($json), $json); */ $inventario = ProductoDAO::getAll(); $json = array(); foreach ($inventario as $producto) { Array_push($json, array("productoID" => $producto->getIdProducto(), "descripcion" => $producto->getNombreProducto(), "tratamiento" => 0, "medida" => UnidadMedidaDAO::getByPK($producto->getIdUnidad())->getAbreviacion(), "agrupacion" => UnidadMedidaDAO::getByPK($producto->getIdUnidad())->getAbreviacion(), "agrupacionTam" => 1, "precioPorAgrupacion" => $producto->getPrecio(), "precioVenta" => $producto->getPrecio(), "precioVentaProcesado" => $producto->getPrecio(), "existencias" => 0, "existenciasOriginales" => 0, "existenciasProcesadas" => 0, "precioIntersucursal" => $producto->getPrecio(), "precioIntersucursalProcesado" => $producto->getPrecio())); } $json = json_encode($json); printf('{ "success": true, "hash" : "%s" , "datos": %s }', md5($json), $json); break; case 500: require_once 'controller/personal.controller.php'; break; case 600: require_once 'controller/efectivo.controller.php'; break; case 700: require_once 'controller/sucursales.controller.php';
Nombre : </td> <td colspan ="3"> <input type = "text" name = "nombre_regla" id = "nombre_regla" value = "" style ="width:80%;"/> </td> </tr> <tr> <td> Producto: </td> <td> <select style="width:50%;" name = "id_producto" id = "id_producto" onChange = "formatForm()" > <?php $options = "<option value = null>-------</option>"; foreach (ProductoDAO::getAll() as $producto) { $options .= "<option value = \"{$producto->getIdProducto()}\">{$producto->getNombreProducto()}</option>"; } echo $options; ?> </select> </td> <td> Categoria de Producto: </td> <td> <select style="width:50%;" name = "categoria_producto" id = "categoria_producto" onChange = "formatForm()" > <?php $options = "<option value = null>-------</option>"; foreach (ClasificacionProductoDAO::getAll() as $clasifProd) { $options .= "<option value = \"{$clasiProd->getIdClasificacionProducto()}\">{$clasifProd->getNombre()}</option>";