/**
  *
  *Editar los detalles de un usuario.
  *
  * @param id_usuario int Usuario a editar
  * @param colonia_2 string Colonia de la direccion alterna del usuario
  * @param id_rol int Id rol del usuario
  * @param salario float Si el usuario contara con un salario no establecido por el rol
  * @param descuento float Descuento que se le hara al usuario al venderle
  * @param telefono_personal_1 string telefono personal del usuario
  * @param limite_de_credito float Limite de credito del usuario
  * @param pagina_web string Pagina web del usuario
  * @param telefono2_2 string telefono2 de la direccion alterna del usuario
  * @param facturar_a_terceros bool Si el usuario puede facturar a terceros
  * @param mensajeria bool Si el usuario tiene una cuenta de mensajeria
  * @param telefono_personal_2 string Telefono personal alterno del usuario
  * @param ventas_a_credito int Ventas a credito del cliente
  * @param texto_extra_2 string Texto extra para ubicar la direccion alterna del usuario
  * @param impuestos json Objeto que contendra los ids de los impuestos que afectan a este usuario
  * @param retenciones json Ids de las retenciones que afectan a este usuario
  * @param saldo_del_ejercicio float Saldo del ejercicio del cliente
  * @param id_ciudad_2 int Id de la ciudad de la direccion alterna del usuario
  * @param dia_de_pago string Fecha de pago del cliente
  * @param calle string calle del domicilio del usuario
  * @param numero_interior_2 string Numero interior de la direccion alterna del usuario
  * @param codigo_postal string Codigo Postal del domicilio del usuario
  * @param texto_extra string Referencia del domicilio del usuario
  * @param numero_interior string Numero interior del domicilio del usuario
  * @param id_ciudad int Id de la ciudad del domicilio del usuario
  * @param password string Password del usuario
  * @param id_clasificacion_proveedor int Id de la clasificacion del proveedor
  * @param codigo_usuario string Codigo interno del usuario
  * @param nombre string Nombre del usuario
  * @param colonia string Colonia donde vive el usuario
  * @param comision_ventas float El porcentaje que gana como comision por ventas este usuario
  * @param correo_electronico string correo electronico del usuario
  * @param representante_legal string Nombre del representante legal del usuario
  * @param calle_2 string Calle de la direccion alterna del usuario
  * @param dias_de_embarque int Dias de emabrque del proveedor ( Lunes, Miercoles, etc)
  * @param telefono2 string Otro telefono de la direccion del usuario
  * @param dias_de_credito int Dias de credito del cliente
  * @param rfc string RFC del usuario
  * @param curp string CURP del usuario
  * @param numero_exterior_2 string Numero exterior de la direccion alterna del usuario
  * @param numero_exterior string Numero exterior del domicilio del usuario
  * @param denominacion_comercial string Denominacion comercial del cliente
  * @param descuento_es_porcentaje bool Si el descuento es un porcentaje o es un valor fijo
  * @param id_clasificacion_cliente int Id de la clasificacion del cliente
  * @param cuenta_bancaria string Cuenta bancaria del usuario
  * @param dia_de_revision string Fecha de revision del cliente
  * @param cuenta_mensajeria string Cuenta de mensajeria del usuario
  * @param telefono1 string Telefono del usuario
  * @param codigo_postal_2 string Codigo postal de la direccion alterna del usuario
  * @param id_sucursal int Id de la sucursal en la que fue creada este usuario o donde labora.
  * @param telefono1_2 string Telefono de la direccion alterna del usuario
  * @param intereses_moratorios float Intereses moratorios del cliente
  **/
 public static function EditarUsuario($id_usuario, $codigo_usuario = null, $comision_ventas = null, $correo_electronico = null, $cuenta_bancaria = null, $cuenta_mensajeria = null, $curp = null, $denominacion_comercial = null, $descuento = null, $descuento_es_porcentaje = null, $dias_de_credito = null, $dias_de_embarque = null, $dia_de_pago = null, $dia_de_revision = null, $direcciones = null, $facturar_a_terceros = null, $id_clasificacion_cliente = null, $id_clasificacion_proveedor = null, $id_moneda = null, $id_rol = null, $id_sucursal = null, $id_tarifa_compra = null, $id_tarifa_venta = null, $id_usuario_padre = null, $impuestos = null, $intereses_moratorios = null, $limite_de_credito = null, $mensajeria = null, $nombre = null, $pagina_web = null, $password = null, $representante_legal = null, $retenciones = null, $rfc = null, $salario = null, $saldo_del_ejercicio = null, $telefono_personal_1 = null, $telefono_personal_2 = null, $tiempo_entrega = null, $ventas_a_credito = null)
 {
     Logger::log("Editando usuario: " . $id_usuario);
     //valida los parametros de la tabla usuario
     /*$validar=self::validarParametrosUsuario($id_usuario, null, $id_sucursal, $id_rol,
     									$id_clasificacion_cliente, $id_clasificacion_proveedor, $id_moneda,
     									null, $nombre, $rfc, $curp, $comision_ventas, $telefono_personal_1,
     									$telefono_personal_2, $limite_de_credito, $descuento, $password, $salario,
     									$correo_electronico,$pagina_web,$saldo_del_ejercicio,$ventas_a_credito,
     									$representante_legal,$facturar_a_terceros,$dia_de_pago,$mensajeria,
     									$intereses_moratorios,$denominacion_comercial,$dias_de_credito,
     									$cuenta_mensajeria,$dia_de_revision,$codigo_usuario,$dias_de_embarque,$tiempo_entrega,$cuenta_bancaria,
     									$id_tarifa_compra,$id_tarifa_venta,$id_usuario_padre);
     					if(is_string($validar))
     					{
     							Logger::error($validar);
     							throw new Exception($validar,901);
     					}
     		*/
     //Se trae el registro con el id obtenido
     $usuario = UsuarioDAO::getByPK($id_usuario);
     //bandera que indica si el rol se cambio o no.
     $cambio_rol = false;
     // se validan los campos, si no son nulos, se cambia el registro.
     if (!is_null($id_sucursal)) {
         $usuario->setIdSucursal($id_sucursal);
     }
     if (!is_null($id_rol)) {
         if ($usuario->getIdRol() != $id_rol) {
             //Si el usuario obtuvo la tarifa de compra o de venta del rol anterior, se actualiza su tarifa tambien
             $rol_nuevo = RolDAO::getByPK($id_rol);
             if ($usuario->getTarifaCompraObtenida() == "rol") {
                 $usuario->setIdTarifaCompra($rol_nuevo->getIdTarifaCompra());
             }
             if ($usuario->getTarifaVentaObtenida() == "rol") {
                 $usuario->setIdTarifaVenta($rol_nuevo->getIdTarifaVenta());
             }
             $usuario->setIdRol($id_rol);
             $usuario->setFechaAsignacionRol(time());
         }
     }
     if (!is_null($id_clasificacion_cliente)) {
         $usuario->setIdCategoriaContacto($id_clasificacion_cliente);
         //Si el usuario obtuvo su tarifa de compra o de venta de la clasificacion de cliente, de proveedor o de rol,
         //entonces se tiene que actualizar
         if ($usuario->getTarifaCompraObtenida() != "usuario") {
             $clasificacion_cliente = CategoriaContactoDAO::getByPK($id_clasificacion_cliente);
             $usuario->setIdTarifaCompra($clasificacion_cliente->getIdTarifaCompra());
             $usuario->setTarifaCompraObtenida("cliente");
         }
         if ($usuario->getTarifaVentaObtenida() != "usuario") {
             $clasificacion_cliente = CategoriaContactoDAO::getByPK($id_clasificacion_cliente);
             $usuario->setIdTarifaVenta($clasificacion_cliente->getIdTarifaVenta());
             $usuario->setTarifaVentaObtenida("cliente");
         }
     }
     if (!is_null($id_clasificacion_proveedor)) {
         $usuario->setIdCategoriaContacto($id_clasificacion_proveedor);
         //Si el usuario obtuvo su tarifa de compra o venta de la clasificacion de proveedor o del rol,
         //entonces se tiene que actualizar
         if ($usuario->getTarifaCompraObtenida() == "rol" || $usuario->getTarifaCompraObtenida() == "proveedor") {
             $clasificacion_proveedor = CategoriaContactoDAO::getByPK($id_clasificacion_proveedor);
             $usuario->setIdTarifaCompra($clasificacion_proveedor->getIdTarifaCompra());
             $usuario->setTarifaCompraObtenida("proveedor");
         }
         if ($usuario->getTarifaVentaObtenida() == "rol" || $usuario->getTarifaVentaObtenida() == "proveedor") {
             $clasificacion_proveedor = CategoriaContactoDAO::getByPK($id_clasificacion_proveedor);
             $usuario->setIdTarifaVenta($clasificacion_proveedor->getIdTarifaVenta());
             $usuario->setTarifaVentaObtenida("proveedor");
         }
     }
     if (!is_null($id_moneda)) {
         $usuario->setIdMoneda($id_moneda);
     }
     if (!is_null($nombre)) {
         $usuario->setNombre($nombre);
     }
     if (!is_null($rfc)) {
         $usuarios = array_diff(UsuarioDAO::search(new Usuario(array("rfc" => $rfc))), array(UsuarioDAO::getByPK($id_usuario)));
         foreach ($usuarios as $u) {
             if ($u->getActivo()) {
                 Logger::error("El rfc de usuario " . $rfc . " ya esta en uso");
                 throw new Exception("El rfc de usuario " . $rfc . " ya esta en uso", 901);
             }
         }
         $usuario->setRfc($rfc);
     }
     if (!is_null($curp)) {
         $usuarios = array_diff(UsuarioDAO::search(new Usuario(array("curp" => $curp))), array(UsuarioDAO::getByPK($id_usuario)));
         foreach ($usuarios as $u) {
             if ($u->getActivo()) {
                 Logger::error("La curp " . $curp . " ya existe");
                 throw new Exception("La curp " . $curp . " ya existe", 901);
             }
         }
         $usuario->setCurp($curp);
     }
     if (!is_null($comision_ventas)) {
         $usuario->setComisionVentas($comision_ventas);
     }
     if (!is_null($telefono_personal_1)) {
         $usuario->setTelefonoPersonal1($telefono_personal_1);
     }
     if (!is_null($telefono_personal_2)) {
         $usuario->setTelefonoPersonal2($telefono_personal_2);
     }
     if (!is_null($limite_de_credito)) {
         $usuario->setLimiteCredito($limite_de_credito);
     }
     if (!is_null($descuento)) {
         $usuario->setDescuento($descuento);
     }
     if (!is_null($password)) {
         $usuario->setPassword(hash("md5", $password));
     }
     if (!is_null($salario)) {
         $usuario->setSalario($salario);
     }
     if (!is_null($correo_electronico)) {
         //se verifica que el correo electronico no se repita
         $usuarios = array_diff(UsuarioDAO::search(new Usuario(array("correo_electronico" => $correo_electronico))), array(UsuarioDAO::getByPK($id_usuario)));
         foreach ($usuarios as $u) {
             if ($u->getActivo()) {
                 Logger::error("El correo electronico " . $correo_electronico . " ya esta en uso");
                 throw new Exception("El correo electronico " . $correo_electronico . " ya esta en uso", 901);
             }
         }
         $usuario->setCorreoElectronico($correo_electronico);
     }
     if (!is_null($pagina_web)) {
         $usuario->setPaginaWeb($pagina_web);
     }
     if (!is_null($saldo_del_ejercicio)) {
         $usuario->setSaldoDelEjercicio($saldo_del_ejercicio);
     }
     if (!is_null($ventas_a_credito)) {
         $usuario->setVentasACredito($ventas_a_credito);
     }
     if (!is_null($representante_legal)) {
         $usuario->setRepresentanteLegal($representante_legal);
     }
     if (!is_null($facturar_a_terceros)) {
         $usuario->setFacturarATerceros($facturar_a_terceros);
     }
     if (!is_null($dia_de_pago)) {
         $usuario->setDiaDePago($dia_de_pago);
     }
     if (!is_null($mensajeria)) {
         $usuario->setMensajeria($mensajeria);
     }
     if (!is_null($intereses_moratorios)) {
         $usuario->setInteresesMoratorios($intereses_moratorios);
     }
     if (!is_null($denominacion_comercial)) {
         $usuario->setDenominacionComercial($denominacion_comercial);
     }
     if (!is_null($dias_de_credito)) {
         $usuario->setDiasDeCredito($dias_de_credito);
     }
     if (!is_null($cuenta_mensajeria)) {
         $usuario->setCuentaDeMensajeria($cuenta_mensajeria);
     }
     if (!is_null($dia_de_revision)) {
         $usuario->setDiaDeRevision($dia_de_revision);
     }
     if (!is_null($codigo_usuario)) {
         //se verifica que el codigo de usuario no sea repetido
         $usuarios = array_diff(UsuarioDAO::search(new Usuario(array("codigo_usuario" => $codigo_usuario))), array(UsuarioDAO::getByPK($id_usuario)));
         foreach ($usuarios as $u) {
             if ($u->getActivo()) {
                 Logger::error("El codigo de usuario " . $codigo_usuario . " ya esta en uso");
                 throw new Exception("El codigo de usuario " . $codigo_usuario . " ya esta en uso", 901);
             }
         }
         $usuario->setCodigoUsuario($codigo_usuario);
     }
     if (!is_null($dias_de_embarque)) {
         $usuario->setDiasDeEmbarque($dias_de_embarque);
     }
     if (!is_null($tiempo_entrega)) {
         $usuario->setTiempoEntrega($tiempo_entrega);
     }
     if (!is_null($cuenta_bancaria)) {
         $usuario->setCuentaBancaria($cuenta_bancaria);
     }
     //se verifica como medida de seguridad que el password no sea igual al codigo de usaurio ni al correo electronico
     if (!is_null($usuario->getPassword())) {
         if ($usuario->getPassword() == $usuario->getCodigoUsuario() || $usuario->getPassword() == $usuario->getCorreoElectronico()) {
             Logger::error("El password (" . $usuario->getPassword() . ") no puede ser igual al codigo de usuario\n\t\t\t\t\t\t\t\t\t\t\t\t(" . $usuario->getCodigoUsuario() . ") ni al correo electronico (" . $usuario->getCorreoElectronico() . ")");
             throw new Exception("El password (" . $usuario->getPassword() . ") no puede ser igual al codigo de usuario\n\t\t\t\t\t\t\t\t\t\t\t\t(" . $usuario->getCodigoUsuario() . ") ni al correo electronico (" . $usuario->getCorreoElectronico() . ")", 901);
         }
     }
     if (!is_null($id_tarifa_compra)) {
         $usuario->setIdTarifaCompra($id_tarifa_compra);
         $usuario->setTarifaCompraObtenida("usuario");
     }
     if (!is_null($id_tarifa_venta)) {
         $usuario->setIdTarifaVenta($id_tarifa_venta);
         $usuario->setTarifaVentaObtenida("usuario");
     }
     DAO::transBegin();
     try {
         //guarda los cambios en el usuario
         UsuarioDAO::save($usuario);
         //Si se reciben direcciones, se borran todas las direcciones de este usuario y se agregan las recibidas.
         if (!is_null($direcciones)) {
             Logger::log("Editando direcciones...");
             if (!is_array($direcciones)) {
                 throw new Exception("Las direcciones recibidas no son un arreglo", 901);
             }
             //Se crean las direcciones recibidas
             foreach ($direcciones as $d) {
                 //Se envia la direccion a editar
                 DireccionController::EditarDireccion($d);
             }
         }
         //si se han obtenido nuevos impuestos se llama al metodo save para que actualice
         //los ya existentes y almacene los nuevos
         /*
         								if(!is_null($impuestos))
         								{
         										 $impuestos = object_to_array($impuestos);
         
         										if(!is_array($impuestos))
         										{
         												throw new Exception("Los impuestos no fueron recibidos correctamente",901);
         										}
         
         
         										foreach($impuestos as $id_impuesto)
         										{
         												ImpuestoUsuarioDAO::save(new ImpuestoUsuario( array( "id_impuesto" => $id_impuesto , "id_usuario" => $id_usuario ) ));
         										}
         
         										//Se obtiene la lista de impuestos correspondientes a este usuario y se buscan aquellos
         										//que no esten incluidos en la nueva lista obtenida de impuestos para eliminarlos.
         										$impuestos_usuario = ImpuestoUsuarioDAO::search( new ImpuestoUsuario( array( "id_usuario" => $id_usuario ) ));
         										foreach($impuestos_usuario as $impuesto_usuario)
         										{
         												$encontrado=false;
         												foreach($impuestos as $id_impuesto)
         												{
         														if($id_impuesto == $impuesto_usuario->getIdImpuesto())
         														{
         																$encontrado = true;
         														}
         												}
         												if(!$encontrado)
         												{
         														ImpuestoUsuarioDAO::delete($impuesto_usuario);
         												}
         										}
         								}
         
         								//si se han obtenido nuevas retenciones se llama al metodo save para que actualice
         								//las ya existentes y almacene las nuevas
         								if(!is_null($retenciones))
         								{
         
         										$retenciones = object_to_array($retenciones);
         
         										if(!is_array($retenciones))
         										{
         												throw new Exception("Las retenciones no fueron recibidas correctamente",901);
         										}
         
         										foreach($retenciones as $id_retencion)
         										{
         												RetencionUsuarioDAO::save(new RetencionUsuario( array( "id_retencion" => $id_retencion , "id_usuario" => $id_usuario ) ));
         										}
         
         										//Se obtiene la lista de retenciones correspondientes a este usuario y se buscan aquellas
         										//que no esten incluidas en la nueva lista obtenida de retenciones para eliminarlas.
         										$retenciones_usuario = RetencionUsuarioDAO::search( new RetencionUsuario( array( "id_usuario" => $id_usuario ) ));
         										foreach($retenciones_usuario as $retencion_usuario)
         										{
         												$encontrado=false;
         												foreach($retenciones as $id_retencion)
         												{
         														if($id_retencion == $retencion_usuario->getIdRetencion())
         														{
         																$encontrado = true;
         														}
         												}
         												if(!$encontrado)
         												{
         														RetencionUsuarioDAO::delete($retencion_usuario);
         												}
         										}
         								}
         */
         //Si cambio el rol, se borran todos los permisos del usuario y se le asignan los
         //permisos del nuevo rol.
         $permisos_usuario = PermisoUsuarioDAO::search(new PermisoUsuario(array("id_usuario" => $id_usuario)));
         foreach ($permisos_usuario as $permiso_usuario) {
             PermisoUsuarioDAO::delete($permiso_usuario);
         }
         $permisos_rol = PermisoRolDAO::search(new PermisoRol(array("id_rol" => $id_rol)));
         foreach ($permisos_rol as $permiso_rol) {
             PermisoUsuarioDAO::save(new PermisoUsuario(array("id_usuario" => $id_usuario, "id_permiso" => $permiso_rol->getIdPermiso())));
         }
     } catch (Exception $e) {
         DAO::transRollback();
         Logger::error("El usuario " . $id_usuario . " no ha podido se editado: " . $e);
         if ($e->getCode() == 901) {
             throw new Exception("No se pudo editar al usuario: " . $e->getMessage(), 901);
         }
         throw new Exception("No se pudo editar al usuario, consulte a su administrador de sistema", 901);
     }
     DAO::transEnd();
     Logger::log("Usuario " . $id_usuario . " editado exitosamente");
 }
Пример #2
0
 /**
  *
  *Edita los datos de una sucursal
  *
  * @author Juan Manuel Garc&iacute;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");
 }
Пример #3
0
 /**
  *
  * Un administrador puede editar una sucursal, incuso si hay puntos de venta con sesiones activas que pertenecen a esa empresa. 
  *
  * @author Juan Manuel Garc&iacute;a Carmona <*****@*****.**>
  * @param id_empresa int Id de la empresa a modificar
  * @param cuentas_bancarias json Arreglo que contiene los id de las cuentas bancarias
  * @param direccion json {    "tipo": "fiscal",    "calle": "Francisco I Madero",    "numero_exterior": "1009A",    "numero_interior": 12,    "colonia": "centro",    "codigo_postal": "38000",    "telefono1": "4611223312",    "telefono2": "",       "id_ciudad": 3,    "referencia": "El local naranja"}
  * @param direccion_web string Direccion del sitio de la empresa
  * @param email string Correo electronico de la empresa
  * @param id_moneda string Id de la moneda base que manejaran las sucursales
  * @param impuestos_compra json Impuestos de compra por default que se heredan a las sucursales y estas a su vez a los productos
  * @param impuestos_venta json Impuestos de venta por default que se heredan a las sucursales y estas a su vez a los productos
  * @param mensaje_morosos string mensaje enviado a los clientes (email) cuando un pago es demorado
  * @param razon_social string El nombre de la nueva empresa.
  * @param representante_legal string El nombre del representante legal de la nueva empresa.
  * @param rfc string RFC de la empresa
  * @param uri_logo string url del logo de la empresa
  **/
 public static function Editar($id_empresa, $cuentas_bancarias = null, $direccion = null, $direccion_web = null, $email = null, $id_moneda = "0", $impuestos_compra = null, $impuestos_venta = null, $mensaje_morosos = null, $razon_social = null, $representante_legal = null, $rfc = null, $uri_logo = null)
 {
     //se guarda el registro de la empresa y se verifica que este activa
     $empresa = EmpresaDAO::getByPK($id_empresa);
     if (!$empresa->getActivo()) {
         Logger::error("La empresa no esta activa, no se puede editar una empresa desactivada");
         throw new Exception("La empresa no esta activa, no se puede editar una empresa desactivada", 901);
     }
     $empresa->setDireccionWeb($direccion_web);
     //TODO : Por que carajos no esta el campo email!!
     //$empresa->setEmail($email);
     //TODO : No se debe de editar
     //$empresa->setIdMoneda($id_moneda);
     $empresa->setMensajeMorosos($mensaje_morosos);
     $empresa->setRazonSocial($razon_social);
     $empresa->setRepresentanteLegal($representante_legal);
     $empresa->setRfc($rfc);
     //editamos el id del logo
     if (!empty($uri_logo)) {
         //varificamos si cambio el logo
         $_logo = LogoDAO::getByPK($empresa->getIdLogo());
         if ($uri_logo !== $_logo->getImagen()) {
             $logo = new Logo(array("imagen" => $uri_logo, "tipo" => "-"));
             try {
                 LogoDAO::save($logo);
             } catch (Exception $e) {
                 DAO::transRollback();
                 Logger::error("No se pudo crear la empresa, error al crear el logo: " . $e->getMessage());
                 throw new Exception("No se pudo crear la empresa, consulte a su administrador de sistema", 901);
             }
             $id_logo = $logo->getIdLogo();
             $empresa->setIdLogo($id_logo);
         }
     }
     //lógica para manejar la edicion o agregado de una direccion verificamos si se cambiaron las direcciones
     if (!is_null($direccion)) {
         if (!is_array($direccion)) {
             //Logger::error("Verifique el formato de los datos de las direcciones, se esperaba un array ");
             //throw new Exception("Verifique el formato de los datos de las empresas, se esperaba un array ");
             $direccion = object_to_array($direccion);
         }
         $_direccion = new Direccion($direccion);
         $d = DireccionDAO::getByPK($empresa->getIdDireccion());
         //verificamos si se va a editar una direccion o se va a crear una nueva
         if (isset($d->id_direccion)) {
             //se edita la direccion
             if (!($_direccion = DireccionDAO::getByPK($d->id_direccion))) {
                 DAO::transRollback();
                 Logger::error("No se tiene registro de la dirección con id : {$direccion->id_direccion}");
                 throw new InvalidDataException("No se tiene registro de la dirección con id : {$direccion->id_direccion}");
             }
             $_direccion->setIdDireccion($d->id_direccion);
             //bandera que indica si cambia algun parametro de la direccion
             $cambio_direccion = false;
             //calle
             if (isset($d->calle)) {
                 $cambio_direccion = true;
                 $_direccion->setCalle($direccion['calle']);
             }
             //numero_exterior
             if (isset($d->numero_exterior)) {
                 $cambio_direccion = true;
                 $_direccion->setNumeroExterior($direccion['numero_exterior']);
             }
             //numero_interior
             if (isset($d->numero_interior)) {
                 $cambio_direccion = true;
                 $_direccion->setNumeroInterior($direccion['numero_interior']);
             }
             //referencia
             if (isset($d->referencia)) {
                 $cambio_direccion = true;
                 $_direccion->setReferencia($direccion['referencia']);
             }
             //colonia
             if (isset($d->colonia)) {
                 $cambio_direccion = true;
                 $_direccion->setColonia($direccion['colonia']);
             }
             //id_ciudad
             if (isset($d->id_ciudad)) {
                 $cambio_direccion = true;
                 $_direccion->setIdCiudad($direccion['id_ciudad']);
             }
             //codigo_postal
             if (isset($d->codigo_postal)) {
                 $cambio_direccion = true;
                 $_direccion->setCodigoPostal($direccion['codigo_postal']);
             }
             //telefono
             if (isset($d->telefono)) {
                 $cambio_direccion = true;
                 $_direccion->setTelefono($direccion['telefono1']);
             }
             //telefono2
             if (isset($d->telefono2)) {
                 $cambio_direccion = true;
                 $_direccion->setTelefono2($direccion['telefono2']);
             }
             //Si cambio algun parametro de direccion, se actualiza el usuario que modifica y la fecha
             if ($cambio_direccion) {
                 DireccionController::EditarDireccion($_direccion);
             } else {
                 DireccionController::NuevaDireccion($calle = isset($d->calle) ? $d->calle : "", $numero_exterior = isset($d->numero_exterior) ? $d->numero_exterior : "", $colonia = isset($d->colonia) ? $d->colonia : "", $id_ciudad = isset($d->id_ciudad) ? $d->id_ciudad : "", $codigo_postal = isset($d->codigo_postal) ? $d->codigo_postal : "", $numero_interior = isset($d->numero_interior) ? $d->numero_interior : "", $referencia = isset($d->referencia) ? $d->referencia : "", $telefono = isset($d->telefono) ? $d->telefono : "", $telefono2 = isset($d->telefono2) ? $d->telefono2 : "");
             }
         }
     }
     DAO::transBegin();
     try {
         //Se guardan los cambios hechos en la empresa
         EmpresaDAO::save($empresa);
     } catch (Exception $e) {
         DAO::transRollback();
         Logger::error("No se pudo modificar la empresa: " . $e);
         throw new Exception("No se pudo modificar la empresa");
     }
     $impuestos_empresa = ImpuestoEmpresaDAO::search(new ImpuestoEmpresa(array("id_empresa" => $empresa->getIdEmpresa())));
     //quitamos los impuestos que no estan actualmente
     foreach ($impuestos_empresa as $impuesto_empresa) {
         $exist_ic = false;
         foreach ($impuestos_compra as $impuesto_compra) {
             if ($impuesto_compra->getIdImpuesto() == $impuesto_empresa->getIdImpuesto()) {
                 $exist_ic = true;
             }
         }
         if (!$exist_ic) {
             try {
                 ImpuestoEmpresaDAO::delete($impuesto_empresa);
             } catch (Exception $e) {
                 Logger::warn("Error al eliminar impuesto : " . $e->getMessage());
             }
         }
     }
     $impuestos_empresa = ImpuestoEmpresaDAO::search(new ImpuestoEmpresa(array("id_empresa" => $empresa->getIdEmpresa())));
     foreach ($impuestos_empresa as $impuesto_empresa) {
         $exist_iv = false;
         foreach ($impuestos_venta as $impuesto_venta) {
             if ($impuesto_venta->getIdImpuesto() == $impuesto_venta->getIdImpuesto()) {
                 $exist_iv = true;
             }
         }
         if (!$exist_iv) {
             try {
                 ImpuestoEmpresaDAO::delete($impuesto_empresa);
             } catch (Exception $e) {
                 Logger::warn("Error al eliminar impuesto : " . $e->getMessage());
             }
         }
     }
     //agregamos los impuestos de compra que no existen
     $impuestos_empresa = ImpuestoEmpresaDAO::search(new ImpuestoEmpresa(array("id_empresa" => $empresa->getIdEmpresa())));
     if ($impuestos_compra != NULL) {
         foreach ($impuestos_compra as $impuesto_compra) {
             $exist_ic = false;
             foreach ($impuestos_empresa as $impuesto_empresa) {
                 if ($impuesto_compra->getIdImpuesto() == $impuesto_empresa->getIdImpuesto()) {
                     $exist_ic = true;
                 }
             }
             if (!$exist_ic) {
                 try {
                     ImpuestoEmpresaDAO::save(new ImpuestoEmpresa(array("id_empresa" => $empresa->getIdEmpresa(), "id_impuesto" => $impuesto_compra->getIdImpuesto())));
                 } catch (Exception $e) {
                     Logger::warn("Error al guardar un impuesto compra : " . $e->getMessage());
                 }
             }
         }
     }
     //agregamos los impuestos de venta que no existen
     $impuestos_empresa = ImpuestoEmpresaDAO::search(new ImpuestoEmpresa(array("id_empresa" => $empresa->getIdEmpresa())));
     if ($impuestos_venta != NULL) {
         foreach ($impuestos_venta as $impuesto_venta) {
             $exist_iv = false;
             foreach ($impuestos_venta as $impuesto_venta) {
                 if ($impuesto_venta->getIdImpuesto() == $impuesto_venta->getIdImpuesto()) {
                     $exist_iv = true;
                 }
             }
             if (!$exist_iv) {
                 try {
                     ImpuestoEmpresaDAO::save(new ImpuestoEmpresa(array("id_empresa" => $empresa->getIdEmpresa(), "id_impuesto" => $impuesto_venta->getIdImpuesto())));
                 } catch (Exception $e) {
                     Logger::warn("Error al guardar un impuesto venta : " . $e->getMessage());
                 }
             }
         }
     }
     if ($cuentas_bancarias != NULL) {
         foreach ($cuentas_bancarias as $cuenta_bancarias) {
             //Pendiente hasta que se haga el SPEC de cuentas bancarias
         }
     }
     DAO::transEnd();
     Logger::log("Empresa editada con exito");
 }
Пример #4
0
if (is_null($this_personal->getIdDireccion())) {
    //no existe direccion
    Logger::log("El uid=" . $_GET["uid"] . " no tiene direccion. Insertando.");
    DireccionController::NuevaDireccionParaUsuario($_GET["uid"]);
    //recargar el objeto de cliente
    $this_personal = UsuarioDAO::getByPK($_GET["uid"]);
}
$esta_dir = DireccionDAO::getByPK($this_personal->getIdDireccion());
if (is_null($esta_dir)) {
    //esta definida pero el registro no existe por alguna razon
    Logger::error("user " . $_GET["uid"] . " se supone que tiene id direccion = " . $this_personal->getIdDireccion() . " , pero esta en null ...");
    DAO::transBegin();
    $this_personal->setIdDireccion(NULL);
    try {
        UsuarioDAO::save($this_personal);
        DireccionController::NuevaDireccionParaUsuario($this_personal->getIdUsuario());
        //recargar el objeto de cliente
        $this_personal = UsuarioDAO::getByPK($_GET["uid"]);
    } catch (Exception $e) {
        DAO::transRollback();
        throw new Exception("No se pudo crear la direccion: " . $e);
    }
    DAO::transEnd();
}
$esta_dir = DireccionDAO::getByPK($this_personal->getIdDireccion());
//titulos
$page->addComponent(new TitleComponent("Editar direccion: " . $esta_dir->getColonia()));
//forma de nuevo usuario
$form = new DAOFormComponent($esta_dir);
$form->hideField(array("id_direccion", "id_usuario_ultima_modificacion", "ultima_modificacion"));
$form->sendHidden("id_direccion");
Пример #5
0
if (is_null($este_cliente->getIdDireccion())) {
    //no existe direccion
    Logger::log("El uid=" . $_GET["cid"] . " no tiene direccion. Insertando.");
    DireccionController::NuevaDireccionParaUsuario($_GET["cid"]);
    //recargar el objeto de cliente
    $este_cliente = UsuarioDAO::getByPK($_GET["cid"]);
}
$esta_dir = DireccionDAO::getByPK($este_cliente->getIdDireccion());
if (is_null($esta_dir)) {
    //esta definida pero el registro no existe por alguna razon
    Logger::error("user " . $_GET["cid"] . " se supone que tiene id direccion = " . $este_cliente->getIdDireccion() . " , pero esta en null ...");
    DAO::transBegin();
    $este_cliente->setIdDireccion(NULL);
    try {
        UsuarioDAO::save($este_cliente);
        DireccionController::NuevaDireccionParaUsuario($este_cliente->getIdUsuario());
        //recargar el objeto de cliente
        $este_cliente = UsuarioDAO::getByPK($_GET["cid"]);
    } catch (Exception $e) {
        DAO::transRollback();
        throw new Exception("No se pudo crear la direccion: " . $e);
    }
    DAO::transEnd();
}
$esta_dir = DireccionDAO::getByPK($este_cliente->getIdDireccion());
//titulos
//forma de nuevo cliente
$form = new DAOFormComponent($esta_dir);
$form->hideField(array("id_direccion", "id_usuario_ultima_modificacion", "ultima_modificacion"));
$form->sendHidden("id_direccion");
$form->createComboBoxJoin("id_ciudad", "nombre", CiudadDAO::getAll(), $esta_dir->getIdCiudad());
Пример #6
0
if (is_null($this_client->getIdDireccion())) {
    //no existe direccion
    Logger::log("El uid=" . $_GET["cid"] . " no tiene direccion. Insertando.");
    DireccionController::NuevaDireccionParaUsuario($_GET["cid"]);
    //recargar el objeto de cliente
    $this_client = UsuarioDAO::getByPK($_GET["cid"]);
}
$esta_dir = DireccionDAO::getByPK($this_client->getIdDireccion());
if (is_null($esta_dir)) {
    //esta definida pero el registro no existe por alguna razon
    Logger::error("user " . $_GET["cid"] . " se supone que tiene id direccion = " . $this_client->getIdDireccion() . " , pero esta en null ...");
    DAO::transBegin();
    $this_client->setIdDireccion(NULL);
    try {
        UsuarioDAO::save($this_client);
        DireccionController::NuevaDireccionParaUsuario($this_client->getIdUsuario());
        //recargar el objeto de cliente
        $this_client = UsuarioDAO::getByPK($_GET["cid"]);
    } catch (Exception $e) {
        DAO::transRollback();
        throw new Exception("No se pudo crear la direccion: " . $e);
    }
    DAO::transEnd();
}
$esta_dir = DireccionDAO::getByPK($this_client->getIdDireccion());
//titulos
$page->addComponent(new TitleComponent("Editar direccion: " . $esta_dir->getColonia()));
//forma de nuevo cliente
$form = new DAOFormComponent($esta_dir);
$form->hideField(array("id_direccion", "id_usuario_ultima_modificacion", "ultima_modificacion"));
$form->sendHidden("id_direccion");