/** * *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; }
/** * *Desactiva la bandera de consignatario a un cliente y elimina su almacen correspondiente. Para poder hacer esto, el almacen debera estar vacio. * * @param id_cliente int Id del cliente a desactivar como consignatario **/ public static function DesactivarConsignatario($id_cliente) { Logger::log("Desactivando consignatario " . $id_cliente); //valida que el cliente exista, que este activo y que sea un cliente $e = self::validarConsignatario($id_cliente); if (is_string($e)) { Logger::error($e); throw new Exception($e); } $cliente = UsuarioDAO::getByPK($id_ciente); $consignaciones = ConsignacionDAO::search(new Consignacion(array("id_cliente" => $id_cliente))); foreach ($consignaciones as $consignacion) { if ($consignacion->getActiva()) { Logger::error("El consignatario no puede ser desactivado pues aun tiene consignaciones activas: id_consignacion= " . $consignacion->getIdConsignacion()); throw new Exception("El consignatario no puede ser desactivado pues aun tiene consignaciones activas"); } } $cliente->setConsignatario(0); $almacenes = AlmacenDAO::search(new Almacen(array("nombre" => $cliente->getCodigoUsuario(), "activo" => 1))); DAO::transBegin(); try { UsuarioDAO::save($cliente); foreach ($almacenes as $almacen) { $productos_almacen = ProductoAlmacenDAO::search(new ProductoAlmacen(array("id_almacen" => $almacen->getIdAlmacen()))); foreach ($productos_almacen as $producto_almacen) { if ($producto_almacen->getCantidad() != 0) { throw new Exception("El almacen no puede ser borrado pues aun contiene productos"); } } $almacen->setActivo(0); AlmacenDAO::save($almacen); } } catch (Exception $e) { DAO::transRollback(); Logger::error("No se ha podido desactivar al consignatario: " . $e); throw new Exception("No se ha podido desactivar al consignatario"); } DAO::transEnd(); Logger::log("Consignatario desactivado exitosamente"); }
$btn_eliminar->onApiCallSuccessRedirect("sucursales.lista.almacen.php"); $btn_eliminar->addName("eliminar"); $funcion_eliminar = " function eliminar_almacen(btn){" . "if(btn == 'yes')" . "{" . "var p = {};" . "p.id_almacen = " . $_GET["aid"] . ";" . "sendToApi_eliminar(p);" . "}" . "}" . " " . "function confirmar(){" . " Ext.MessageBox.confirm('Desactivar', 'Desea eliminar este almacen?', eliminar_almacen );" . "}"; $btn_eliminar->addOnClick("confirmar", $funcion_eliminar); $menu->addMenuItem($btn_eliminar); $page->addComponent($menu); } // // Forma de producto // $form = new DAOFormComponent($este_almacen); $form->setEditable(false); $form->hideField(array("id_almacen")); $form->createComboBoxJoin("id_sucursal", "razon_social", SucursalDAO::getAll(), $este_almacen->getIdSucursal()); $form->createComboBoxJoin("id_empresa", "razon_social", EmpresaDAO::search(new Empresa(array("activo" => 1))), $este_almacen->getIdEmpresa()); $form->createComboBoxJoin("id_tipo_almacen", "descripcion", TipoAlmacenDAO::getAll(), $este_almacen->getIdTipoAlmacen()); $page->addComponent($form); $page->addComponent(new TitleComponent("Productos en este almacen"), 3); $tabla = new TableComponent(array("id_producto" => "Producto", "id_unidad" => "Unidad", "cantidad" => "Cantidad"), ProductoAlmacenDAO::search(new ProductoAlmacen(array("id_almacen" => $_GET["aid"])))); function funcion_producto($id_producto) { return ProductoDAO::getByPK($id_producto) ? ProductoDAO::getByPK($id_producto)->getNombreProducto() : "--------"; } function funcion_unidad($id_unidad) { return UnidadDAO::getByPK($id_unidad) ? UnidadDAO::getByPK($id_unidad)->getNombre() : "---------"; } $tabla->addColRender("id_producto", "funcion_producto"); $tabla->addColRender("id_unidad", "funcion_unidad"); $page->addComponent($tabla); $page->render();