/**
      *
      * 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;
 }
Beispiel #3
0
               //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>";