<?php define("BYPASS_INSTANCE_CHECK", false); require_once "../../../server/bootstrap.php"; $page = new GerenciaComponentPage(); //titulos $page->addComponent(new TitleComponent("Nueva caja")); //forma de nueva caja $form = new DAOFormComponent(array(new Caja())); $form->hideField(array("id_caja", "abierta", "saldo", "activa", "id_cuenta_contable")); $form->addApiCall("api/sucursal/caja/nueva/"); $form->onApiCallSuccessRedirect("sucursales.lista.caja.php"); $form->makeObligatory(array("token", "descripcion", "id_sucursal")); $form->createComboBoxJoin("control_billetes", "control_billetes", array(array("id" => 1, "caption" => "Llevar control"), array("id" => 0, "caption" => "No llevar control"))); $form->createComboBoxJoin("id_sucursal", "descripcion", SucursalDAO::search(new Sucursal(array("activa" => 1)))); $page->addComponent($form); //render the page $page->render();
require_once "../../../server/bootstrap.php"; $page = new GerenciaComponentPage(); // // Titulo de la pagina // $page->addComponent(new TitleComponent("Editar gerencia", 2)); // // Forma de usuario // $form = new DAOFormComponent(new Sucursal()); $form->hideField(array("id_direccion", "fecha_apertura", "fecha_baja", "activa", "rfc", "razon_social", "descripcion", "saldo_a_favor", "margen_utilidad", "descuento")); $form->addApiCall("api/sucursal/gerencia/editar/", "GET"); // $form->addField("id_producto", "Productos", "text","","productos"); // $form->createListBoxJoin("id_producto", "nombre_producto", ProductoDAO::search( new Producto( array( "activo" => 1 ) ) )); // $form->createComboBoxJoin("id_sucursal", "razon_social", SucursalDAO::search(new Sucursal(array("activa" => 1)))); $form->createComboBoxJoinDistintName("id_gerente", "id_usuario", "nombre", UsuarioDAO::search(new Usuario(array("id_rol" => 2)))); // $form->createComboBoxJoin( "id_rol", "nombre", RolDAO::getAll(), $este_usuario->getIdRol() ); // // $form->createComboBoxJoin( "id_moneda", "nombre", MonedaDAO::search( new Moneda( array( "activa" => 1 ) ) ),$este_usuario->getIdMoneda() ); // // $form->createComboBoxJoin( "id_clasificacion_cliente", "nombre", ClasificacionClienteDAO::getAll(), $este_usuario->getIdClasificacionCliente() ); // // $form->createComboBoxJoin( "id_clasificacion_proveedor", "nombre", ClasificacionProveedorDAO::search( new ClasificacionProveedor( array( "activa" => 1 ) ) ), $este_usuario->getIdClasificacionProveedor() ); //$form->createComboBoxJoin("id_tipo_almacen", "descripcion", array_diff(TipoAlmacenDAO::getAll(), TipoAlmacenDAO::search( new TipoAlmacen( array( "id_tipo_almacen" => 2 ) ) ) ), $este_almacen->getIdTipoAlmacen() ); // $form->renameField( array( // "id_ciudad" => "municipio" // )); $form->makeObligatory(array("id_sucursal", "id_gerente")); $page->addComponent($form); $page->render();
/** * *Edita los datos de una sucursal * * @author Juan Manuel García Carmona <*****@*****.**> * @param id_sucursal int Id de la sucursal a modificar * @param id_tarifa int Id de la tarifa por default de la sucursal * @param activo bool Indica si esta sucursal estar activa * @param descripcion string Descripcion de la sucursal * @param direccion json Objeto que contiene la informacin sobre al direccion * @param id_gerente int Id del gerente de la sucursal **/ public static function Editar($id_sucursal, $activo = null, $descripcion = null, $direccion = null, $id_gerente = null, $id_tarifa = null) { DAO::transBegin(); //Se obtiene la sucursal a editar y se valida que exista if (!($sucursal = SucursalDAO::getByPK($id_sucursal))) { Logger::error("La sucursal con id : {$id_sucursal} no existe"); throw new InvalidDataException("La sucursal con id : {$id_sucursal} no existe"); } //verificamos si la sucursal esta activa en caso de no estarlo solo permitira activarla if ($activo !== NULL) { $val = null; if ($activo == 1) { $val = true; } elseif ($activo == "") { $val = false; } $sucursal->setActiva($val); } //editamos solo la direccion if (!is_null($direccion)) { if (!is_array($direccion)) { $direccion = object_to_array($direccion); } //varificamos si la direccion que tiene la sucursal existe si no creamos una if (!($_direccion = DireccionDAO::getByPK($sucursal->getIdDireccion()))) { //no existe, etonces creamos una nueva direccion DireccionController::NuevaDireccion(isset($direccion['calle']) ? $direccion['calle'] : "", isset($direccion['numero_exterior']) ? $direccion['numero_exterior'] : "", isset($direccion['colonia']) ? $direccion['colonia'] : "", isset($direccion['id_ciudad']) ? $direccion['id_ciudad'] : "", isset($direccion['codigo_postal']) ? $direccion['codigo_postal'] : "", isset($direccion['numero_interior']) ? $direccion['numero_interior'] : "", isset($direccion['referencia']) ? $direccion['referencia'] : "", isset($direccion['telefono1']) ? $direccion['telefono1'] : "", isset($direccion['telefono2']) ? $direccion['telefono2'] : ""); } else { //la direccion existe, hay que editarla $_direccion->setCalle(isset($direccion['calle']) ? $direccion['calle'] : ""); $_direccion->setNumeroExterior(isset($direccion['numero_exterior']) ? $direccion['numero_exterior'] : ""); $_direccion->setNumeroInterior(isset($direccion['numero_interior']) ? $direccion['numero_interior'] : ""); $_direccion->setReferencia(isset($direccion['referencia']) ? $direccion['referencia'] : ""); $_direccion->setColonia(isset($direccion['colonia']) ? $direccion['colonia'] : ""); $_direccion->setIdCiudad(isset($direccion['id_ciudad']) ? $direccion['id_ciudad'] : ""); $_direccion->setCodigoPostal(isset($direccion['codigo_postal']) ? $direccion['codigo_postal'] : ""); $_direccion->setTelefono(isset($direccion['telefono1']) ? $direccion['telefono1'] : ""); $_direccion->setTelefono2(isset($direccion['telefono2']) ? $direccion['telefono2'] : ""); try { DireccionDAO::save($_direccion); } catch (Exception $e) { DAO::transRollback(); Logger::error("Error al modificar la direccion : {$e}"); throw new Exception("Ocurrio un error al modificar la direccion"); } } } //verificamos si cambio el gerente if (!is_null($id_gerente)) { $usuario_gerente = UsuarioDAO::getByPK($id_gerente); if (!$usuario_gerente) { Logger::error("No se tiene registro del gerente con id : {$id_gerente}"); throw new Exception("No se tiene registro del gerente con id : {$id_gerente}"); } else { $sucursal->setIdGerente($usuario_gerente->getIdUsuario()); } } // if (!is_null($id_tarifa) && !($tarifa = TarifaDAO::getByPK($id_tarifa))) { Logger::error("No se tiene registro de la tarifa con id : {$id_gerente}"); throw new Exception("No se tiene registro de la tarifa indicada"); } else { $sucursal->setIdTarifa($id_tarifa); } //verificamos si cambio la descripcion $descripcion = trim($descripcion); if ($descripcion !== $sucursal->getDescripcion()) { //verificamos si hay una sucursal con esa misma descripcion $sucursales = SucursalDAO::search(new Sucursal(array("descripcion" => $descripcion))); if (!empty($sucursales)) { DAO::transRollback(); Logger::error("Ya existe una sucursal con esa descripcion"); throw new Exception("Ya existe una sucursal con esa descripcion"); } else { $sucursal->setDescripcion($descripcion); } } try { SucursalDAO::save($sucursal); } catch (Exception $e) { DAO::transRollback(); Logger::error("No se pudo actualizar la sucursal: " . $e); if ($e->getCode() == 901) { throw new Exception("No se pudo actualizar la sucursal: " . $e->getMessage(), 901); } throw new Exception("No se pudo actualizar la sucursal", 901); } DAO::transEnd(); Logger::log("Sucursal actualizada exitosamente"); }
/** * * 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; }
$page->addComponent(new TitleComponent("Editando a " . $este_cliente->getNombre(), 2)); $page->nextTab("General"); $form = new DAOFormComponent($este_cliente); $form->hideField(array("id_usuario", "id_rol", "id_clasificacion_proveedor", "id_direccion", "id_direccion_alterna", "fecha_asignacion_rol", "comision_ventas", "fecha_alta", "fecha_baja", "activo", "last_login", "salario", "dias_de_embarque", "consignatario", "tiempo_entrega", "cuenta_bancaria", "mensajeria", "token_recuperacion_pass", "ventas_a_credito", "dia_de_pago", "dia_de_revision", "id_clasificacion_cliente")); $form->renameField(array("id_usuario" => "id_cliente")); $form->sendHidden("id_cliente"); $form->setValueField("password", ""); $form->createComboBoxJoin("id_moneda", "nombre", MonedaDAO::search(new Moneda(array("activa" => 1))), $este_cliente->getIdMoneda()); $clasificaciones = ContactosController::BuscarCategoria(); $clasificaciones = $clasificaciones['categorias']; foreach ($clasificaciones as $key => $clasificacion) { $clasificacion->caption = $clasificacion->nombre; $clasificaciones[$key] = $clasificacion->asArray(); } $form->createComboBoxJoin('id_categoria_contacto', 'nombre', $clasificaciones); $form->createComboBoxJoin("id_sucursal", "razon_social", SucursalDAO::search(new Sucursal(array("activa" => 1))), $este_cliente->getIdSucursal()); $form->createComboBoxJoinDistintName("id_tarifa_venta", "id_tarifa", "nombre", TarifaDAO::search(new Tarifa(array("tipo_tarifa" => "venta")))); $form->createComboBoxJoin("id_tarifa_compra", "nombre", TarifaDAO::search(new Tarifa(array("tipo_tarifa" => "compra")))); $form->createComboBoxJoin("tarifa_compra_obtenida", "tarifa_compra_obtenida", array("rol", "proveedor", "cliente", "usuario")); $form->createComboBoxJoin("tarifa_venta_obtenida", "tarifa_venta_obtenida", array("rol", "proveedor", "cliente", "usuario")); $form->addApiCall("api/cliente/editar/", "POST"); $form->onApiCallSuccessRedirect("clientes.ver.php?cid=" . $_GET["cid"]); $form->renameField(array("nombre" => "razon_social", "codigo_usuario" => "codigo_cliente", "correo_electronico" => "email", "id_categoria_contacto" => "clasificacion_cliente", "id_moneda" => "moneda_del_cliente", "pagina_web" => "sitio_web", "id_sucursal" => "sucursal")); $page->addComponent($form); $page->nextTab("Otros"); //buscar los parametros extra $out = ExtraParamsValoresDAO::getVals("usuarios", $este_cliente->getIdUsuario()); $epform = new FormComponent(); $epform->setEditable(true); foreach ($out as $ep) { $epform->addField($ep["campo"], $ep["caption"], $ep["tipo"], $ep["val"]);