public void PruebaConsultarClienteNaturalXId() { bool sonIguales = false; ClienteNatural cliente = new ClienteNatural(); Lugar lugar = new Lugar(); string telefono = "2121111111"; List <string> telefonos = new List <string>(); telefonos.Add(telefono); lugar.NombreLugar = "Caracas"; lugar.CodigoPostal = "1020"; int id = 1; cliente.Nat_Id = "11111111"; cliente.Nat_Nombre = "Valentina"; cliente.Nat_Apellido = "Scioli"; cliente.Nat_Correo = "Gerente de Proyectos"; cliente.Nat_Pais = "Venezuela"; cliente.Nat_Estado = "Dtto Capital"; cliente.Nat_Ciudad = lugar; cliente.Nat_Telefonos = telefonos; ClienteNatural clienteActual = baseDeDatosCliente.ConsultarClienteNatural(id); sonIguales = cliente.Equals(clienteActual); Assert.IsTrue(sonIguales); }
/// <summary> /// Método que le solicita a acceso a datos que actualice los datos del cliente natural seleccionado, /// en la Base de Datos /// </summary> /// <param name="clienteNatural">Información del Cliente Natural</param> /// <returns>Retorna true si lo realizó, false en caso contrario</returns> public bool ModificarClienteNatural(ClienteNatural clienteNatural, string cargo, string codigo, string numero) { ClienteNatural cliente = new ClienteNatural(); cliente = clienteNatural; return(baseDeDatosCliente.ModificarClienteNatural(cliente, cargo, codigo, numero)); }
private void DesplegarClienteNatural() { LogicaCliente logica = new LogicaCliente(); ClienteNatural cliente = logica.ConsultarClienteNatural(1); List <string> telefonos = new List <string>(); telefonos = cliente.Nat_Telefonos; foreach (string telefono in telefonos) { this.telefonoCliente.Value = telefono; } this.direccionCliente.Value = cliente.Nat_Direccion; this.apellidoCliente.Value = cliente.Nat_Apellido; this.nombreCliente.Value = cliente.Nat_Nombre; this.cedulaCliente.Value = cliente.Nat_Id; LlenaCampoPais(cliente.Nat_Pais); LlenaCampoEstado(cliente.Nat_Estado); LlenaCampoEstado(cliente.Nat_Ciudad.NombreLugar); this.comboEstado.Value = cliente.Nat_Estado; this.comboCiudad.Value = cliente.Nat_Ciudad.NombreLugar; this.codigopostalCliente.Value = cliente.Nat_Ciudad.CodigoPostal; this.correoCliente.Value = cliente.Nat_Correo; }
public void Init() { clienteNatural = new ClienteNatural(); clienteJuridico = new ClienteJuridico(); telefonos = new List <string>(); contactos = new List <Contacto>(); }
public void init() { elProyecto = new Proyecto("TES", "Test", true, "Test descripcion", "Bs", 1000000); elClienteJuridico = new ClienteJuridico(); elClienteNatural = new ClienteNatural(); elClienteJuridico.Jur_Id = "2"; elClienteNatural.Nat_Id = "1"; }
/// <summary> /// Metodo para consultar que la cedula sea unica /// </summary> /// <param name="parametro">Cliente para verificar si la cedula ya existe</param> /// <returns>true si la cedula no esta asociada a algun cliente, /// false si ya existe esa cedula en bd</returns> public bool BuscarCIClienteNatural(Entidad parametro) { ClienteNatural elCliente = (ClienteNatural)parametro; bool retorno = false; try { List <Parametro> parametros = new List <Parametro>(); Parametro elParametro = new Parametro(RecursoBDModulo2.ParamCedulaClienteNat, SqlDbType.VarChar, elCliente.Nat_Cedula, false); parametros.Add(elParametro); elParametro = new Parametro(RecursoBDModulo2.ParamSalida, SqlDbType.Int, true); parametros.Add(elParametro); List <Resultado> resultados = EjecutarStoredProcedure(RecursoBDModulo2.BuscarCIClienteNatural, parametros); foreach (Resultado resultado in resultados) { if (resultado.etiqueta == RecursoBDModulo2.ParamSalida) { if (elCliente.Id == 0) { retorno = true; } else if (int.Parse(resultado.valor) == elCliente.Id) { retorno = true; } } } return(retorno); } #region catches catch (SqlException ex) { Logger.EscribirError(Convert.ToString(this.GetType()), ex); throw new ExcepcionesTotem.ExceptionTotemConexionBD( RecursoGeneralDAO.Codigo_Error_BaseDatos, RecursoGeneralDAO.Mensaje_Error_BaseDatos, ex); } catch (ExcepcionesTotem.ExceptionTotemConexionBD ex) { Logger.EscribirError(Convert.ToString(this.GetType()), ex); throw ex; } catch (Exception ex) { Logger.EscribirError(Convert.ToString(this.GetType()), ex); throw new ExceptionTotem(RecursoBDModulo2.CodigoExcepcionGeneral, RecursoBDModulo2.MensajeExcepcionGeneral, ex); } #endregion }
/// <summary> /// Método que solicita a acceso a datos que inserte el cliente natural nuevo /// </summary> /// <param name="clienteNatural">Información del Cliente Natural</param> /// <returns>Retorna true si lo realizó, false en caso contrario</returns> public bool AgregarClienteNatural(string identificador, string nombre, string apellido, int fkLugar, string direccion, string correo, string telefono) { try { int codTele = 0; int idNumero = 0; string contenedorCodigo = string.Empty; //Vamos a separar el string de telefono en codTele y IdNumero para //ser insertados como númericos en BD. char[] cadena = telefono.ToCharArray(); char[] codigoAux = new char[4]; char[] numeroAux = new char[8]; string codigoSeparado = ""; string numeroSeparado = ""; int j = 0; for (int i = 0; i < cadena.Length; i++) { //Los 3 primeros indices son para codigo if (i < 3) { codigoAux[i] = cadena[i]; codigoSeparado = codigoSeparado + codigoAux[i]; } //Los demás son para teléfono else { numeroAux[j] = cadena[i]; numeroSeparado = numeroSeparado + numeroAux[j]; j++; } } codTele = Convert.ToInt32(codigoSeparado); idNumero = Convert.ToInt32(numeroSeparado); ClienteNatural clienteNatural = new ClienteNatural(); clienteNatural.Nat_Id = identificador; clienteNatural.Nat_Nombre = nombre; clienteNatural.Nat_Apellido = apellido; clienteNatural.Nat_Direccion = direccion; clienteNatural.Nat_Correo = correo; return(baseDeDatosCliente.AgregarClienteNatural(clienteNatural, fkLugar, codTele, idNumero)); } catch (Exception e) { throw new ExcepcionesTotem.Modulo2.ClienteLogicaException("L_02_003", "Error dentro de la capa lógica", e); } }
/// <summary> /// Método que accede a la Base de Datos para consultar una lista de Clientes Naturales /// </summary> /// <returns>Retorna una lista de Clientes Naturales, null si el objeto no existe</returns> public List <ClienteNatural> ConsultarClientesNaturales() { //Lista donde devolveremos los Clientes Naturales List <ClienteNatural> listaClientesNaturales = new List <ClienteNatural>(); try { //Respuesta de la consulta a la Base de Datos SqlDataReader respuesta; //Indicamos que es un Stored Procedure, cual utilizar y ademas la conexion que necesita this.comando = new SqlCommand(RecursosBaseDeDatosModulo2.ProcedureListarClientesNaturales, this.conexion); this.comando.CommandType = CommandType.StoredProcedure; //Se abre conexion contra la Base de Datos this.conexion.Open(); //Ejecutamos la consulta y traemos las filas que fueron obtenidas respuesta = comando.ExecuteReader(); //Si se encontraron Clientes Naturales comienza a agregar en la variable lista, sino, se devolvera vacia if (respuesta.HasRows) { //Recorremos cada fila devuelta de la consulta while (respuesta.Read()) { //Creamos el Cliente Natural y lo anexamos a la lista ClienteNatural aux = new ClienteNatural(respuesta.GetString(0), respuesta.GetString(1), respuesta.GetString(2), respuesta.GetString(3)); listaClientesNaturales.Add(aux); } } //Cerramos conexion this.conexion.Close(); } catch (SqlException ex) { StringBuilder errorMessages = new StringBuilder(); for (int i = 0; i < ex.Errors.Count; i++) { errorMessages.Append("Index #" + i + "\n" + "Message: " + ex.Errors[i].Message + "\n" + "LineNumber: " + ex.Errors[i].LineNumber + "\n" + "Source: " + ex.Errors[i].Source + "\n" + "Procedure: " + ex.Errors[i].Procedure + "\n"); } Console.WriteLine(errorMessages.ToString()); } catch (Exception error) { throw new Exception("Ha ocurrido un error inesperado al Listar", error); } //Retornamos la respuesta return(listaClientesNaturales); }
/// <summary> /// Método que accede a la Base de Datos para Agregar un Cliente Natural /// </summary> /// <param name="clienteNatural">Información del Cliente Natural</param> /// <returns>Retorna true si lo realizó, false en caso contrario</returns> public bool AgregarClienteNatural(ClienteNatural clienteNatural, int fkLugar, int codigo, int numero) { bool respuesta = false; try { int nroDeFilasAfectadas = 0; this.comando = new SqlCommand(RecursosBaseDeDatosModulo2.ProcedureAgregarClienteNatural, this.conexion); this.comando.CommandType = CommandType.StoredProcedure; this.comando.Parameters.AddWithValue(RecursosBaseDeDatosModulo2.Parametroidentificador, clienteNatural.Nat_Id); this.comando.Parameters.AddWithValue(RecursosBaseDeDatosModulo2.ParametroNombren, clienteNatural.Nat_Nombre); this.comando.Parameters.AddWithValue(RecursosBaseDeDatosModulo2.ParametroApellidon, clienteNatural.Nat_Apellido); this.comando.Parameters.AddWithValue(RecursosBaseDeDatosModulo2.ParametroCorreon, clienteNatural.Nat_Correo); this.comando.Parameters.AddWithValue(RecursosBaseDeDatosModulo2.NombreDireccion, clienteNatural.Nat_Direccion); this.comando.Parameters.AddWithValue(RecursosBaseDeDatosModulo2.ParametroLugarn, fkLugar); this.comando.Parameters.AddWithValue(RecursosBaseDeDatosModulo2.Codigo, codigo); this.comando.Parameters.AddWithValue(RecursosBaseDeDatosModulo2.Numero, numero); this.conexion.Open(); nroDeFilasAfectadas = this.comando.ExecuteNonQuery(); if (nroDeFilasAfectadas > 0) { respuesta = true; } } catch (SqlException e) { throw new ExcepcionesTotem.ExceptionTotemConexionBD(RecursoGeneralBD.Codigo, RecursoGeneralBD.Mensaje, e); } catch (NullReferenceException e) { throw e; } catch (Exception e) { throw e; } finally { this.conexion.Close(); } return(respuesta); }
/// <summary> /// Método para Crear un proyecto en la bd /// </summary> /// <param name="proyecto">Proyecto a insertar en la bd</param> /// <param name="clienteNatural">Cliente natural del proyecto</param> /// <returns>Retrorna True si se crea, False si no </returns> public static bool CrearProyecto(Proyecto proyecto, ClienteNatural clienteNatural) { //Si no existe el proyecto se agrega if (!ExisteProyecto(proyecto.Codigo)) { try { //parametros para insertar un proyecto List <Parametro> parametros = new List <Parametro>(); Parametro parametro = new Parametro(RecursosBDModulo4.ParametroCodigoProyecto, SqlDbType.VarChar, proyecto.Codigo, false); parametros.Add(parametro); parametro = new Parametro(RecursosBDModulo4.ParametroNombreProyecto, SqlDbType.VarChar, proyecto.Nombre, false); parametros.Add(parametro); parametro = new Parametro(RecursosBDModulo4.ParametroEstadoProyecto, SqlDbType.Bit, proyecto.Estado.ToString(), false); parametros.Add(parametro); parametro = new Parametro(RecursosBDModulo4.ParametroDescripcionProyecto, SqlDbType.VarChar, proyecto.Descripcion, false); parametros.Add(parametro); parametro = new Parametro(RecursosBDModulo4.ParametroCostoProyecto, SqlDbType.Int, proyecto.Costo.ToString(), false); parametros.Add(parametro); parametro = new Parametro(RecursosBDModulo4.ParametroMonedaProyecto, SqlDbType.VarChar, proyecto.Moneda, false); parametros.Add(parametro); parametro = new Parametro(RecursosBDModulo4.ParametroClienteNatural, SqlDbType.Int, clienteNatural.Nat_Id, false); parametros.Add(parametro); BDConexion con = new BDConexion(); List <Resultado> resultados = con.EjecutarStoredProcedure(RecursosBDModulo4.ProcedimientoAgregarProyectoClienteNatural, parametros); //si la creacion es correcta retorna true if (resultados != null) { return(true); } else { throw new NotImplementedException(); } } catch (NotImplementedException e) { throw e; } } else { //el codigo existe por lo tanto no se crea el proyecto throw new ExcepcionesTotem.Modulo4.CodigoRepetidoException(RecursosBDModulo4.CodigoProyectoExiste, RecursosBDModulo4.MensajeCodigoProyectoExiste, new Exception()); } }
/// <summary> /// Método que accede a la Base de Datos para Consultar un Cliente Natural en específico /// </summary> /// <returns>Retorna el objeto de tipo Cliente Juridico, null si el objeto no existe</returns> public ClienteNatural ConsultarClienteNatural(int idCliente) { ClienteNatural clienteNatural = new ClienteNatural(); try { this.comando = new SqlCommand(RecursosBaseDeDatosModulo2.ProcedureDetallarCliente, this.conexion); this.comando.CommandType = CommandType.StoredProcedure; this.comando.Parameters.Add(new SqlParameter(RecursosBaseDeDatosModulo2.ParametroIdClienteNatural, idCliente)); SqlDataReader lectura; this.conexion.Open(); lectura = this.comando.ExecuteReader(); while (lectura.Read()) { clienteNatural = ObtenerClienteNaturalBD(lectura); } } catch (SqlException ex) { throw new ExceptionTotemConexionBD( RecursoGeneralBD.Codigo, RecursoGeneralBD.Mensaje, ex); } catch (NullReferenceException ex) { throw new ClienteInexistenteException( RecursosBaseDeDatosModulo2.CodigoClienteInexistente, RecursosBaseDeDatosModulo2.MensajeClienteInexistente, ex); } catch (Exception ex) { throw ex; } finally { this.conexion.Close(); } return(clienteNatural); }
public void PruebaEliminarClienteNatural() { bool sonIguales = false; ClienteNatural cliente = new ClienteNatural(); int id = 4; cliente.Nat_Id = "44444444"; cliente.Nat_Nombre = "Pedro"; cliente.Nat_Apellido = "De Jesus"; cliente.Nat_Correo = "*****@*****.**"; ClienteNatural clienteActual = baseDeDatosCliente.ConsultarClienteNatural(id); sonIguales = cliente.Equals(clienteActual); Assert.IsTrue(sonIguales); }
/// <summary> /// metodo para cargar los datos del cliente /// </summary> /// <param name="idCliente">id del cliente</param> public void cargarCliente(String idCliente) { FabricaEntidades fabrica = new FabricaEntidades(); Entidad entidadCliente = fabrica.ObtenerClienteNatural(); try { entidadCliente.Id = int.Parse(idCliente); Comando <Entidad, Entidad> comando = FabricaComandos.CrearComandoConsultarXIDClienteNatural(); ClienteNatural elCliente = (ClienteNatural)comando.Ejecutar(entidadCliente); vista.cedulaCliente = elCliente.Nat_Cedula; vista.nombreCliente = elCliente.Nat_Nombre; vista.apellidoCliente = elCliente.Nat_Apellido; vista.codTelefono = elCliente.Nat_Telefono.Codigo; vista.telefonoCliente = elCliente.Nat_Telefono.Numero; vista.correoCliente = elCliente.Nat_Correo; vista.comboPais.SelectedValue = elCliente.Nat_Direccion.ElPais; llenarComboEstadosXPais(elCliente.Nat_Direccion.ElPais); vista.comboEstado.SelectedValue = elCliente.Nat_Direccion.ElEstado; llenarComboCiudadXEstado(elCliente.Nat_Direccion.ElEstado); vista.comboCiudad.SelectedValue = elCliente.Nat_Direccion.LaCiudad; vista.direccionCliente = elCliente.Nat_Direccion.LaDireccion; vista.codigoPostalCliente = elCliente.Nat_Direccion.CodigoPostal; } catch (NullReferenceException ex) { vista.alertaClase = RecursoInterfazM2.Alerta_Clase_Error; vista.alertaRol = RecursoInterfazM2.Alerta_Rol; vista.alerta = RecursoInterfazM2.Alerta_Html + RecursoInterfazM2.Alerta_Error_NullPointer + RecursoInterfazM2.Alerta_Html_Final; } catch (Exception ex) { vista.alertaClase = RecursoInterfazM2.Alerta_Clase_Error; vista.alertaRol = RecursoInterfazM2.Alerta_Rol; vista.alerta = RecursoInterfazM2.Alerta_Html + ex.Message + RecursoInterfazM2.Alerta_Html_Final; } }
/// <summary> /// Método que obtiene directamente de la Base de Datos /// un registro de tipo Cliente Natural /// </summary> /// <param name="lector">Cliente Natural seleccionado</param> public ClienteNatural ObtenerClienteNaturalBD(SqlDataReader lector) { ClienteNatural clienteNatural = new ClienteNatural(); Lugar lugar = new Lugar(); List <string> telefonos = new List <string>(); try { clienteNatural.Nat_Id = lector.GetString(0); clienteNatural.Nat_Nombre = lector.GetString(1); clienteNatural.Nat_Apellido = lector.GetString(2); clienteNatural.Nat_Correo = lector.GetString(4); int codigo = lector.GetInt32(5); int numero = lector.GetInt32(6); string numeroCompleto = codigo.ToString() + numero.ToString(); telefonos.Add(numeroCompleto); clienteNatural.Nat_Telefonos = telefonos; clienteNatural.Nat_Pais = lector.GetString(7); clienteNatural.Nat_Estado = lector.GetString(8); lugar.NombreLugar = lector.GetString(9); clienteNatural.Nat_Direccion = lector.GetString(10); lugar.CodigoPostal = lector.GetInt32(11).ToString(); clienteNatural.Nat_Ciudad = lugar; } catch (SqlException ex) { throw ex; } catch (NullReferenceException ex) { throw ex; } catch (Exception ex) { throw ex; } return(clienteNatural); }
/// <summary> /// Metodo para cargar los datos del cliente natural /// </summary> /// <param name="idCliente">id del cliente</param> public void cargarDatos(String idCliente) { FabricaEntidades laFabrica = new FabricaEntidades(); Entidad entidad = laFabrica.ObtenerClienteNatural(); Comando <Entidad, Entidad> comando = FabricaComandos.CrearComandoConsultarXIDClienteNatural(); try { entidad.Id = int.Parse(idCliente); ClienteNatural elCliente = (ClienteNatural)comando.Ejecutar(entidad); vista.apellidoCliente = elCliente.Nat_Apellido; vista.cedulaCliente = elCliente.Nat_Cedula; vista.ciudad = elCliente.Nat_Direccion.LaCiudad; vista.codpostal = elCliente.Nat_Direccion.CodigoPostal; vista.correocliente = elCliente.Nat_Correo; vista.direccion = elCliente.Nat_Direccion.LaDireccion; vista.estado = elCliente.Nat_Direccion.ElEstado; vista.nombreCliente = elCliente.Nat_Nombre; vista.pais = elCliente.Nat_Direccion.ElPais; vista.telefono = elCliente.Nat_Telefono.Codigo + "-" + elCliente.Nat_Telefono.Numero; } catch (NullReferenceException ex) { vista.alertaClase = RecursoInterfazM2.Alerta_Clase_Error; vista.alertaRol = RecursoInterfazM2.Alerta_Rol; vista.alerta = RecursoInterfazM2.Alerta_Html + RecursoInterfazM2.Alerta_Error_NullPointer + RecursoInterfazM2.Alerta_Html_Final; } catch (Exception ex) { vista.alertaClase = RecursoInterfazM2.Alerta_Clase_Error; vista.alertaRol = RecursoInterfazM2.Alerta_Rol; vista.alerta = RecursoInterfazM2.Alerta_Html + ex.Message + RecursoInterfazM2.Alerta_Html_Final; } }
public void PruebaCtoresClienteNaturalConParametros() { //Prueba con parámetros de nombre y apellido string nombre = "Alfonso"; string apellido = "Carrasco"; clienteNatural = new ClienteNatural(nombre, apellido); Assert.IsNotNull(clienteNatural); //Nombre, apellido y cédula string cedula = "20631987"; clienteNatural = new ClienteNatural(cedula, nombre, apellido); Assert.IsNotNull(clienteNatural); //Nombre, Apellido,Cédula y Correo string correo = "*****@*****.**"; clienteNatural = new ClienteNatural(cedula, nombre, apellido, correo); Assert.IsNotNull(clienteNatural); //Nombre, Apellido, Cédula, Correo, País, Estado , Ciudad y Dirección string pais = "Venezuela"; string estado = "Dtto Capital"; Lugar lugar = new Lugar(21, "Caracas", "Ciudad", "1020", 1); string direccion = "Avenida La Salle con cruce calle villaflor, frente al McDonald's" + ",La Florida.Caracas.Venezuela"; clienteNatural = new ClienteNatural(cedula, nombre, apellido, correo, pais, estado, lugar, direccion); Assert.IsNotNull(clienteNatural); //Nombre, Apellido, Cédula, Correo, País, Estado , Ciudad, Dirección y Teléfonos telefonos.Add("04125985004"); telefonos.Add("04126485404"); clienteNatural = new ClienteNatural(cedula, nombre, apellido, correo, pais, estado, lugar, direccion, telefonos); Assert.IsNotNull(clienteNatural); }
/// <summary> /// metodo para agregar un cliente natural /// </summary> /// <param name="parametro">cliente natural a agregar</param> /// <returns>booleano que relfeja el exito de la operacion</returns> public bool Agregar(Entidad parametro) { try { ClienteNatural elCliente = (ClienteNatural)parametro; if (BuscarCIClienteNatural(elCliente)) { #region Llenado de arreglo de parametros List <Parametro> parametros = new List <Parametro>(); Parametro elParametro = new Parametro(RecursoBDModulo2.ParamCedulaClienteNat, SqlDbType.VarChar, elCliente.Nat_Cedula, false); parametros.Add(elParametro); elParametro = new Parametro(RecursoBDModulo2.ParamNombreClienteNat, SqlDbType.VarChar, elCliente.Nat_Nombre, false); parametros.Add(elParametro); elParametro = new Parametro(RecursoBDModulo2.ParamApellidoClienteNat, SqlDbType.VarChar, elCliente.Nat_Apellido, false); parametros.Add(elParametro); elParametro = new Parametro(RecursoBDModulo2.ParamCorreoClienteNat, SqlDbType.VarChar, elCliente.Nat_Correo, false); parametros.Add(elParametro); elParametro = new Parametro(RecursoBDModulo2.ParamCodigoTelef, SqlDbType.VarChar, elCliente.Nat_Telefono.Codigo, false); parametros.Add(elParametro); elParametro = new Parametro(RecursoBDModulo2.ParamNumeroTelef, SqlDbType.VarChar, elCliente.Nat_Telefono.Numero, false); parametros.Add(elParametro); elParametro = new Parametro(RecursoBDModulo2.ParamPais, SqlDbType.VarChar, elCliente.Nat_Direccion.ElPais, false); parametros.Add(elParametro); elParametro = new Parametro(RecursoBDModulo2.ParamEstado, SqlDbType.VarChar, elCliente.Nat_Direccion.ElEstado, false); parametros.Add(elParametro); elParametro = new Parametro(RecursoBDModulo2.ParamCiudad, SqlDbType.VarChar, elCliente.Nat_Direccion.LaCiudad, false); parametros.Add(elParametro); elParametro = new Parametro(RecursoBDModulo2.ParamDireccion, SqlDbType.VarChar, elCliente.Nat_Direccion.LaDireccion, false); parametros.Add(elParametro); elParametro = new Parametro(RecursoBDModulo2.ParamCodigoPostal, SqlDbType.Int, elCliente.Nat_Direccion.CodigoPostal, false); parametros.Add(elParametro); #endregion List <Resultado> tmp = EjecutarStoredProcedure(RecursoBDModulo2.AgregarClienteNat, parametros); return(true); } else { Logger.EscribirError(Convert.ToString(this.GetType()), new CIClienteNatExistenteException()); throw new CIClienteNatExistenteException(RecursoBDModulo2.CodigoCIExistenteException, RecursoBDModulo2.MensajeCIExistenteException, new CIClienteNatExistenteException()); } } #region catches catch (SqlException ex) { Logger.EscribirError(Convert.ToString(this.GetType()), ex); throw new ExcepcionesTotem.ExceptionTotemConexionBD( RecursoGeneralDAO.Codigo_Error_BaseDatos, RecursoGeneralDAO.Mensaje_Error_BaseDatos, ex); } catch (CIClienteNatExistenteException ex) { Logger.EscribirError(Convert.ToString(this.GetType()), ex); throw ex; } catch (ExcepcionesTotem.ExceptionTotemConexionBD ex) { Logger.EscribirError(Convert.ToString(this.GetType()), ex); throw ex; } catch (Exception ex) { Logger.EscribirError(Convert.ToString(this.GetType()), ex); throw new ExceptionTotem(RecursoBDModulo2.CodigoExcepcionGeneral, RecursoBDModulo2.MensajeExcepcionGeneral, ex); } #endregion }
/// <summary> /// Metodo para consultar todos los datos de un cliente natural /// dado un id /// </summary> /// <param name="parametro">entidad que posee el id del que se desean saber /// todos los datos</param> /// <returns>cliente natural con todos sus datos</returns> public Entidad ConsultarXId(Entidad parametro) { FabricaEntidades laFabrica = new FabricaEntidades(); DataTable resultado = new DataTable(); List <Parametro> parametros = new List <Parametro>(); Parametro elParametro; Direccion laDireccion; Telefono elTelefono; try { ClienteNatural elCliente = (ClienteNatural)laFabrica.ObtenerClienteNatural(); elParametro = new Parametro(RecursoBDModulo2.ParamIDClienteNat, SqlDbType.Int, parametro.Id.ToString(), false); parametros.Add(elParametro); resultado = EjecutarStoredProcedureTuplas(RecursoBDModulo2.ConsultarDatosClienteNat, parametros); if (resultado == null) { Logger.EscribirError(Convert.ToString(this.GetType()), new ClienteInexistenteException()); throw new ClienteInexistenteException(RecursoBDModulo2.CodigoClienteInexistente, RecursoBDModulo2.MensajeClienteInexistente, new ClienteInexistenteException()); } foreach (DataRow row in resultado.Rows) { laDireccion = (Direccion)laFabrica.ObtenerDireccion(); elTelefono = (Telefono)laFabrica.ObtenerTelefono(); elCliente = (ClienteNatural)laFabrica.ObtenerClienteNatural(); elCliente.Id = int.Parse(row[RecursoBDModulo2.AliasIDClienteNat].ToString()); elCliente.Nat_Nombre = row[RecursoBDModulo2.AliasNombreClienteNat].ToString(); elCliente.Nat_Apellido = row[RecursoBDModulo2.AliasApellidoClienteNat].ToString(); elCliente.Nat_Cedula = row[RecursoBDModulo2.AliasCedulaClienteNat].ToString(); elCliente.Nat_Correo = row[RecursoBDModulo2.AliasCorreoClienteNat].ToString(); elTelefono.Codigo = row[RecursoBDModulo2.AliasCodigoTelefono].ToString(); elTelefono.Numero = row[RecursoBDModulo2.AliasNumTelefono].ToString(); elCliente.Nat_Telefono = elTelefono; laDireccion.LaDireccion = row[RecursoBDModulo2.AliasNombreDireccion].ToString(); laDireccion.CodigoPostal = row[RecursoBDModulo2.AliasCodPostalDireccion].ToString(); laDireccion.LaCiudad = row[RecursoBDModulo2.AliasNombreCiudad].ToString(); laDireccion.ElEstado = row[RecursoBDModulo2.AliasNombreEstado].ToString(); laDireccion.ElPais = row[RecursoBDModulo2.AliasNombrePais].ToString(); elCliente.Nat_Direccion = laDireccion; } return(elCliente); } #region catches catch (SqlException ex) { Logger.EscribirError(Convert.ToString(this.GetType()), ex); throw new ExcepcionesTotem.ExceptionTotemConexionBD( RecursoGeneralDAO.Codigo_Error_BaseDatos, RecursoGeneralDAO.Mensaje_Error_BaseDatos, ex); } catch (ClienteInexistenteException ex) { Logger.EscribirError(Convert.ToString(this.GetType()), ex); throw ex; } catch (ExcepcionesTotem.ExceptionTotemConexionBD ex) { Logger.EscribirError(Convert.ToString(this.GetType()), ex); throw ex; } catch (Exception ex) { Logger.EscribirError(Convert.ToString(this.GetType()), ex); throw new ExceptionTotem(RecursoBDModulo2.CodigoExcepcionGeneral, RecursoBDModulo2.MensajeExcepcionGeneral, ex); } #endregion }
/// <summary> /// Método que accede a la Base de Datos para Modificar un Cliente Natural /// </summary> /// <param name="clienteNatural">Información del Cliente Natural</param> /// <returns>Retorna true si lo realizó, false en caso contrario</returns> public bool ModificarClienteNatural(ClienteNatural clienteNatural, string cargo, string codigo, string numero) { throw new NotImplementedException(); }
public void Limpiar() { clienteJuridico = null; clienteNatural = null; }
public string GetData(int nroFactura, int idCliente, int nroAtencion, string urlPdfFactura) { logFacturas.Info("-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------"); logFacturas.Info("Se recibe factura con siguientes datos:Factura x Actividad Particular:" + nroFactura + " IdCliente:" + idCliente + " nroAtencion:" + nroAtencion + " urlPdf:" + urlPdfFactura); try { // Inicializacion //Int32 _idContrato = 0; Decimal _Valtotal = 0; Decimal _ValDescuento = 0; Decimal _ValDescuentoT = 0; Decimal _ValPagos = 0; Decimal _ValImpuesto = 0; Decimal _ValCobrar = 0; DateTime _FecFactura = DateTime.Now; Decimal _valPos = 0; Decimal _valNoPos = 0; //Int32 _IdUsuarioR = 0; Int32 _idTercero = 0; //string _usrNombre = string.Empty; //string _usrNumDocumento = string.Empty; //Byte _usrIdTipoDoc = 0; //string _numDocCliente = string.Empty; Int32 _tipoDocClienteDian = 0; //string _razonSocial = string.Empty; //string _repLegal = string.Empty; //string _RegimenFiscal = string.Empty; //Int16 _idNaturaleza = 0; int concepto = 0; FormaPago formaPagoTmp = new FormaPago(); List <AnticiposItem> anticiposWrk = new List <AnticiposItem>(); //Fin de Inicializacion documentoRoot documentoF2 = new documentoRoot(); Documento facturaEnviar = new Documento(); facturaEnviar.identificadorTransaccion = "D7F719C2 - 75F4 - 4F06 - B7CB - F583FC28DBEE"; facturaEnviar.URLPDF = urlPdfFactura; facturaEnviar.NITFacturador = Properties.Settings.Default.NitHusi; facturaEnviar.prefijo = Properties.Settings.Default.Prefijo; facturaEnviar.numeroDocumento = nroFactura.ToString(); facturaEnviar.tipoDocumento = 1; facturaEnviar.subTipoDocumento = "01"; facturaEnviar.tipoOperacion = "10"; facturaEnviar.generaRepresentacionGrafica = false; using (SqlConnection conn = new SqlConnection(Properties.Settings.Default.DBConexion)) { conn.Open(); string qryFacturaEnc = @"SELECT fact.idContrato,Valtotal,ValDescuento,ValDescuentoT,ValPagos,ValImpuesto,ValCobrar,FecFactura,valPos,valNoPos,fact.IdUsuarioR, usr.nom_usua,usr.NumDocumento,usr.IdTipoDoc,ter.IdTercero,ter.idRegimen,ter.IdNaturaleza,Cli.NomCliente,Cli.ApeCliente,cli.NumDocumento,Cli.IdTipoDoc FROM facFactura fact INNER JOIN ASI_USUA usr ON fact.IdUsuarioR = usr.IdUsuario INNER JOIN admAtencion Atn ON fact.IdDestino=Atn.IdAtencion INNER JOIN AdmCliente Cli ON Atn.IdCliente=Cli.IdCliente LEFT JOIN genTercero ter ON Cli.IdTercero=ter.IdTercero WHERE IdFactura =@nroFactura"; SqlCommand cmdFacturaEnc = new SqlCommand(qryFacturaEnc, conn); cmdFacturaEnc.Parameters.Add("@nroFactura", SqlDbType.Int).Value = nroFactura; SqlDataReader rdFacturaEnc = cmdFacturaEnc.ExecuteReader(); if (rdFacturaEnc.HasRows) { rdFacturaEnc.Read(); _idTercero = rdFacturaEnc.GetInt32(14); _Valtotal = Math.Round(rdFacturaEnc.GetDecimal(1), 2); _ValDescuento = Math.Round(rdFacturaEnc.GetDecimal(2), 2); _ValDescuentoT = Math.Round(rdFacturaEnc.GetDecimal(3), 2); _ValPagos = Math.Round(rdFacturaEnc.GetDecimal(4), 2); _ValImpuesto = Math.Round(rdFacturaEnc.GetDecimal(5), 2); _ValCobrar = Math.Round(rdFacturaEnc.GetDecimal(6), 2); _valPos = Math.Round(rdFacturaEnc.GetDecimal(8), 2); _valNoPos = Math.Round(rdFacturaEnc.GetDecimal(9), 2); } if (_ValPagos > 0) { string Consultapagos = "SELECT IdConcepto,Valor FROM facFacAtenConcepto WHERE IdFactura=@idFactura"; SqlCommand cmdConsultaPagos = new SqlCommand(Consultapagos, conn); cmdConsultaPagos.Parameters.Add("@idfactura", SqlDbType.Int).Value = nroFactura; SqlDataReader rdConsultapagos = cmdConsultaPagos.ExecuteReader(); if (rdConsultapagos.HasRows) { while (rdConsultapagos.Read()) { AnticiposItem anticipoWrk = new AnticiposItem(); anticipoWrk.comprobante = $"{rdConsultapagos.GetInt32(0)}-{nroFactura}"; anticipoWrk.valorAnticipo = double.Parse(rdConsultapagos.GetDouble(1).ToString()); anticiposWrk.Add(anticipoWrk); } } } } //*********Clientes Naturales ClienteNatural cliente = new ClienteNatural(); string urlClientes = $"{Properties.Settings.Default.urlServicioClientes}ClienteNatural?idFactura={nroFactura}"; logFacturas.Info("URL de Request-Peticion Servicios de Clientes:" + urlClientes); HttpWebRequest peticion = WebRequest.Create(urlClientes) as HttpWebRequest; peticion.Method = "GET"; peticion.ContentType = "application/json"; HttpWebResponse respuestaClientes = peticion.GetResponse() as HttpWebResponse; StreamReader sr = new StreamReader(respuestaClientes.GetResponseStream()); string infCliente = sr.ReadToEnd(); logFacturas.Info("Cliente:" + infCliente); cliente = JsonConvert.DeserializeObject <ClienteNatural>(infCliente); //************************* string formatoWrk = formatosFecha.formatofecha(cliente.FecFactura); facturaEnviar.fechaEmision = formatoWrk.Split('T')[0]; facturaEnviar.horaEmision = formatoWrk.Split('T')[1]; facturaEnviar.moneda = "COP"; formaPagoTmp.tipoPago = 1; formaPagoTmp.codigoMedio = "10"; facturaEnviar.formaPago = formaPagoTmp; List <DetallesItem> detalleProductos = new List <DetallesItem>(); //****************** CLIENTE // Variables Inicializacion string _direccionCliente = string.Empty; string _telefonoCliente = string.Empty; string _municipioCliente = string.Empty; string _departamento = string.Empty; string _correoCliente = string.Empty; Adquiriente adquirienteTmp = new Adquiriente { identificacion = cliente.NroDoc_Cliente, codigoInterno = cliente.IdTercero.ToString(), razonSocial = $"{cliente.ApeCliente} {cliente.NomCliente}", nombreSucursal = $"{cliente.ApeCliente} {cliente.NomCliente}", correo = cliente.cuenta_correo.Trim().Split(';')[0], telefono = cliente.Nro_Telefono, }; using (SqlConnection connXX = new SqlConnection(Properties.Settings.Default.DBConexion)) { connXX.Open(); string qryTipoDocDian = "SELECT TipoDocDian FROM homologaTipoDocDian WHERE IdTipoDoc=@tipoDoc"; SqlCommand cmdTipoDocDian = new SqlCommand(qryTipoDocDian, connXX); cmdTipoDocDian.Parameters.Add("@tipoDoc", SqlDbType.TinyInt).Value = cliente.TipoDoc_Cliente; Int16 tipoDoc = Int16.Parse(cmdTipoDocDian.ExecuteScalar().ToString()); logFacturas.Info($"cliente.TipoDoc_Cliente:{cliente.TipoDoc_Cliente}"); _tipoDocClienteDian = Int32.Parse(tipoDoc.ToString()); logFacturas.Info($"_tipoDocClienteDian:{_tipoDocClienteDian }"); } adquirienteTmp.tipoIdentificacion = _tipoDocClienteDian; List <NotificacionesItem> notificaciones = new List <NotificacionesItem>(); NotificacionesItem notificaItem = new NotificacionesItem(); notificaItem.tipo = 1; List <string> valorNotificacion = new List <string>(); valorNotificacion.Add(cliente.cuenta_correo.Trim()); notificaItem.valor = valorNotificacion; notificaciones.Add(notificaItem); facturaEnviar.notificaciones = notificaciones; if (cliente.idRegimen.Equals("C")) { adquirienteTmp.tipoRegimen = "48"; } else { adquirienteTmp.tipoRegimen = "49"; } if (cliente.IdNaturaleza == 3) { adquirienteTmp.tipoPersona = "1"; } else if (cliente.IdNaturaleza == 4) { adquirienteTmp.tipoPersona = "2"; } else { adquirienteTmp.tipoPersona = "0"; } List <string> responsanbilidadesR = new List <string>(); using (SqlConnection conexion01 = new SqlConnection(Properties.Settings.Default.DBConexion)) { conexion01.Open(); SqlCommand sqlValidaDet = new SqlCommand("spTerceroResponsabilidadRut", conexion01); sqlValidaDet.CommandType = CommandType.StoredProcedure; sqlValidaDet.Parameters.Add("@idtercero", SqlDbType.Int).Value = _idTercero; SqlDataReader rdValidaDet = sqlValidaDet.ExecuteReader(); if (rdValidaDet.HasRows) { rdValidaDet.Read(); responsanbilidadesR.Add(rdValidaDet.GetString(0)); } else { responsanbilidadesR.Add("R-99-PN"); } } adquirienteTmp.responsabilidadesRUT = responsanbilidadesR; Ubicacion ubicacionCliente = new Ubicacion(); ubicacionCliente.pais = "CO"; ubicacionCliente.codigoMunicipio = cliente.cod_municipio; ubicacionCliente.direccion = cliente.direccion; adquirienteTmp.ubicacion = ubicacionCliente; documentoF2.adquiriente = adquirienteTmp; double TotalGravadoIva = double.Parse(_ValImpuesto.ToString()); documentoF2.anticipos = anticiposWrk; //************************************************************ Detalle de Factura por Actividad *********************************************************** using (SqlConnection conexion01 = new SqlConnection(Properties.Settings.Default.DBConexion)) { string qryFactura = "SELECT IdFactura,NumFactura,IdDestino,IdTransaccion,IdPlan,IdContrato,ValTotal,ValDescuento,ValDescuentoT,ValPagos,ValImpuesto,ValCobrar,IndNotaCred,IndTipoFactura,CodEnti,CodEsor,FecFactura,Ruta,IdCausal,IdUsuarioR,IndHabilitado,IdNoFacturado,valPos,valNoPos FROM facFactura WHERE idFactura=@idFactura AND idDestino=@idAtencion"; conexion01.Open(); SqlCommand cmdFactura = new SqlCommand(qryFactura, conexion01); cmdFactura.Parameters.Add("@idFactura", SqlDbType.Int).Value = nroFactura; cmdFactura.Parameters.Add("@idAtencion", SqlDbType.Int).Value = nroAtencion; SqlDataReader rdFactura = cmdFactura.ExecuteReader(); if (rdFactura.HasRows) { rdFactura.Read(); string strDetalleFac = @"SELECT isnull(h.NumAutorizacionInicial,'0') AS Nro_Autorizacion, upper(isnull(J.CodProMan,CASE ISNULL(f.REGCUM,'0') WHEN '0' THEN P.CodProducto ELSE F.REGCUM END )) as Cod_Servicio, upper(( isnull(J.NomPRoman,P.NomProducto)) ) as Des_Servicio, f.Cantidad as Cantidad, f.ValTotal as Vlr_Unitario_Serv, isnull(AD.ValTotal,round(F.Cantidad*F.ValTotal,0)) as Vlr_Total_Serv, a.IdFactura,F.IdProducto,p.codproducto,p.NomProducto,F.IdMovimiento,F.ValDescuento,F.CantidadFNC,F.IdTasaVenta,F.ValTasa,F.ValCuotaMod,F.indPos,F.Regcum, p.IdProductoTipo, --dbo.unidadProducto (p.IdProducto,p.IdProductoTipo) as 'Unidad',O.idOrden 'Unidad' as 'Unidad' FROM facfactura a INNER JOIN concontrato b on a.idcontrato=b.idcontrato INNER JOIN admatencion c on a.iddestino=c.idatencion INNER JOIN admcliente d on d.idcliente=c.idcliente INNER JOIN gentipodoc e on e.idtipodoc=d.idtipodoc INNER JOIN facfacturadet f on f.idfactura=a.idfactura LEFT JOIN facFacturaDetAjuDec AD ON AD.IdFactura = F.IdFactura and AD.IdProducto = F.IdProducto and AD.IdMovimiento = F.IdMovimiento INNER JOIN facFacturaDetOrden O on f.idFactura=O.idFactura AND f.idProducto=O.idProducto AND f.idMovimiento=O.idMovimiento INNER JOIN proproducto p on p.idproducto=f.idproducto AND p.IdProductoTipo not IN (8,12) INNER JOIN facmovimiento g on g.idmovimiento=f.idmovimiento and g.iddestino=a.iddestino LEFT JOIN admatencioncontrato h on h.idatencion=a.iddestino and a.idcontrato=h.idcontrato and a.idplan=h.idplan and h.indhabilitado=1 LEFT JOIN contarifa i on i.idtarifa=b.idtarifa LEFT JOIN conManualAltDet J ON J.IdProducto = F.IdProducto AND J.IndHabilitado = 1 AND J.IdManual = i.IdManual WHERE a.IndTipoFactura='ACT' AND a.idfactura= @idFactura ORDER BY A.IdFactura,o.Idorden"; logFacturas.Info("consulta de Productos:" + strDetalleFac); SqlCommand cmdDetalleFac = new SqlCommand(strDetalleFac, conexion01); logFacturas.Info("Nro Factura:" + rdFactura.GetInt32(0)); cmdDetalleFac.Parameters.Add("@idFactura", SqlDbType.Int).Value = rdFactura.GetInt32(0); SqlDataReader rdDetalleFac = cmdDetalleFac.ExecuteReader(); if (rdDetalleFac.HasRows) { Int16 nroLinea = 1; while (rdDetalleFac.Read()) { try { List <TibutosDetalle> listaTributos = new List <TibutosDetalle>(); DetallesItem lineaProducto = new DetallesItem(); lineaProducto.tipoDetalle = 1; // Linea Normal string codigoProducto = rdDetalleFac.GetString(1); lineaProducto.valorCodigoInterno = codigoProducto; if (rdDetalleFac.GetInt16(18) == 5 || rdDetalleFac.GetInt16(18) == 6) { lineaProducto.codigoEstandar = "999"; } else { lineaProducto.codigoEstandar = "999"; } lineaProducto.valorCodigoEstandar = codigoProducto; lineaProducto.descripcion = rdDetalleFac.GetString(2); lineaProducto.unidades = double.Parse(rdDetalleFac.GetDouble(3).ToString()); lineaProducto.unidadMedida = "94";// rdDetalleFac.GetString(19); lineaProducto.valorUnitarioBruto = double.Parse(rdDetalleFac.GetDouble(4).ToString()); lineaProducto.valorBruto = double.Parse(rdDetalleFac.GetDouble(5).ToString()); lineaProducto.valorBrutoMoneda = "COP"; TibutosDetalle tributosWRKIva = new TibutosDetalle(); tributosWRKIva.id = "01"; tributosWRKIva.nombre = "Iva"; tributosWRKIva.esImpuesto = true; tributosWRKIva.porcentaje = 0; tributosWRKIva.valorBase = double.Parse(rdDetalleFac.GetDouble(5).ToString()); tributosWRKIva.valorImporte = rdDetalleFac.GetDouble(5) * 0; TotalGravadoIva = TotalGravadoIva + rdDetalleFac.GetDouble(5); tributosWRKIva.tributoFijoUnidades = 0; tributosWRKIva.tributoFijoValorImporte = 0; listaTributos.Add(tributosWRKIva); lineaProducto.tributos = listaTributos; detalleProductos.Add(lineaProducto); nroLinea++; } catch (Exception sqlExp) { logFacturas.Warn($"Se ha presentado una excepcion:{sqlExp.Message} Pila de Error:{ sqlExp.StackTrace}"); throw; } } logFacturas.Info("Numero de productos procesados" + nroLinea); } else // Si No hay Detalle de Productos { logFacturas.Info("No se encontro Detalle de productos para la factura. " + strDetalleFac); } } else // No se encuentra Informacion de la Factura y Atencion { logFacturas.Info("No se encontro Informacion de Factura y Atencion." + qryFactura); } } documentoF2.detalles = detalleProductos; List <TributosItem> tributosTMP = new List <TributosItem>(); List <DetalleTributos> tributosDetalle = new List <DetalleTributos>(); DetalleTributos detalleTributos = new DetalleTributos() // Un Objeto por cada Tipo de Iva { valorImporte = 0, valorBase = TotalGravadoIva, porcentaje = 0 }; tributosDetalle.Add(detalleTributos); TributosItem itemTributo = new TributosItem() { id = "01", //Total de Iva nombre = "Iva", esImpuesto = true, valorImporteTotal = 0, detalles = tributosDetalle // DEtalle de los Ivas }; tributosTMP.Add(itemTributo); documentoF2.tributos = tributosTMP; ///<summary> ///Inicio de Totales de la Factura /// </summary> Totales totalesTmp = new Totales() { valorBruto = double.Parse(_Valtotal.ToString()), valorAnticipos = double.Parse(_ValPagos.ToString()), valorTotalSinImpuestos = TotalGravadoIva, valorTotalConImpuestos = double.Parse(_Valtotal.ToString()) + double.Parse(_ValImpuesto.ToString()), valorNeto = double.Parse(_ValCobrar.ToString()) }; documentoF2.totales = totalesTmp; logFacturas.Info("Numero de Productos Procesados, para JSon:" + detalleProductos.Count); try { string urlConsumo = Properties.Settings.Default.urlFacturaElectronica; logFacturas.Info("URL de Request Transfiriendo:" + urlConsumo); HttpWebRequest request = WebRequest.Create(urlConsumo) as HttpWebRequest; documentoF2.documento = facturaEnviar; string facturaJson = JsonConvert.SerializeObject(documentoF2); logFacturas.Info("Json de la Factura:" + facturaJson); request.Method = "POST"; request.ContentType = "application/json"; string Usuario = Properties.Settings.Default.usuario; string Clave = Properties.Settings.Default.clave; string credenciales = Convert.ToBase64String(Encoding.ASCII.GetBytes(Usuario + ":" + Clave)); request.Headers.Add("Authorization", "Basic " + credenciales); Byte[] data = Encoding.UTF8.GetBytes(facturaJson); Stream st = request.GetRequestStream(); st.Write(data, 0, data.Length); st.Close(); int loop1, loop2; NameValueCollection valores; valores = request.Headers; // Pone todos los nombres en un Arreglo string[] arr1 = valores.AllKeys; for (loop1 = 0; loop1 < arr1.Length; loop1++) { logFacturas.Info("Key: " + arr1[loop1] + "<br>"); // Todos los valores string[] arr2 = valores.GetValues(arr1[loop1]); for (loop2 = 0; loop2 < arr2.Length; loop2++) { logFacturas.Info("Value " + loop2 + ": " + arr2[loop2]); } } HttpWebResponse response = request.GetResponse() as HttpWebResponse; logFacturas.Info("Codigo Status:" + response.StatusCode); logFacturas.Info("Descripcion Status:" + response.StatusDescription); StreamReader lectorDatos = new StreamReader(response.GetResponseStream()); string respuestaTransfiriendo = lectorDatos.ReadToEnd(); logFacturas.Info("Respuesta:" + respuestaTransfiriendo); string valorRpta = "00"; RespuestaTransfiriendo respuesta = JsonConvert.DeserializeObject <RespuestaTransfiriendo>(respuestaTransfiriendo); if (respuesta.esExitoso) { logFacturas.Info($"PDF:{respuesta.resultado.URLPDF}"); logFacturas.Info($"XML:{respuesta.resultado.URLXML}"); logFacturas.Info($"UUID:{ respuesta.resultado.UUID}"); logFacturas.Info($"QR:{respuesta.resultado.QR}"); using (SqlConnection conn = new SqlConnection(Properties.Settings.Default.DBConexion)) { conn.Open(); string strActualiza = @"UPDATE dbo.facFacturaTempWEBService SET identificador=@identificador WHERE IdFactura=@nrofactura"; SqlCommand cmdActualiza = new SqlCommand(strActualiza, conn); cmdActualiza.Parameters.Add("@identificador", SqlDbType.VarChar).Value = respuesta.resultado.UUID; cmdActualiza.Parameters.Add("@nrofactura", SqlDbType.Int).Value = nroFactura; if (cmdActualiza.ExecuteNonQuery() > 0) { logFacturas.Info("Factura Actualizada con UUID en facFacturaTempWEBService"); using (WebClient webClient = new WebClient()) { try { string carpetaDescarga = Properties.Settings.Default.urlDescargaPdfFACT + DateTime.Now.Year + @"\" + respuesta.resultado.UUID + ".pdf"; logFacturas.Info("Carpeta de Descarga:" + carpetaDescarga); webClient.DownloadFile(respuesta.resultado.URLPDF, carpetaDescarga); //System.Threading.Thread.Sleep(1000); logFacturas.Info($"Descarga de PDF Factura...Terminada"); carpetaDescarga = Properties.Settings.Default.urlDescargaPdfFACT + DateTime.Now.Year + @"\" + respuesta.resultado.UUID + ".XML"; webClient.DownloadFile(respuesta.resultado.URLXML, carpetaDescarga); //System.Threading.Thread.Sleep(1000); logFacturas.Info($"Descarga de XML...Terminada"); using (SqlConnection conn3 = new SqlConnection(Properties.Settings.Default.DBConexion)) { conn3.Open(); string qryActualizaTempWEBService = @"UPDATE dbo.facFacturaTempWEBService SET CodCUFE=@cufe,cadenaQR=@cadenaQR WHERE identificador=@identificador"; SqlCommand cmdActualizaTempWEBService = new SqlCommand(qryActualizaTempWEBService, conn); cmdActualizaTempWEBService.Parameters.Add("@cufe", SqlDbType.VarChar).Value = respuesta.resultado.UUID; cmdActualizaTempWEBService.Parameters.Add("@cadenaQR", SqlDbType.NVarChar).Value = respuesta.resultado.QR; cmdActualizaTempWEBService.Parameters.Add("@identificador", SqlDbType.VarChar).Value = respuesta.resultado.UUID; if (cmdActualizaTempWEBService.ExecuteNonQuery() > 0) { logFacturas.Info("Descarga Existosa de Archivos de la Factura con Identificadotr:" + respuesta.resultado.UUID + " Destino:" + carpetaDescarga); if (!(respuesta.advertencias is null)) { string qryAdvertencia = @"INSERT INTO dbo.facFacturaTempWSAdvertencias(IdFactura,CodAdvertencia,FecRegistro,DescripcionAdv) VALUES(@IdFactura, @CodAdvertencia, @FecRegistro, @DescripcionAdv)"; SqlCommand cmdInsertarAdvertencia = new SqlCommand(qryAdvertencia, conn); cmdInsertarAdvertencia.Parameters.Add("@IdFactura", SqlDbType.Int); cmdInsertarAdvertencia.Parameters.Add("@CodAdvertencia", SqlDbType.VarChar); cmdInsertarAdvertencia.Parameters.Add("@DescripcionAdv", SqlDbType.NVarChar); cmdInsertarAdvertencia.Parameters.Add("@FecRegistro", SqlDbType.DateTime); foreach (AdvertenciasItem itemAdv in respuesta.advertencias) { cmdInsertarAdvertencia.Parameters["@IdFactura"].Value = nroFactura; cmdInsertarAdvertencia.Parameters["@CodError"].Value = itemAdv.codigo; //cmdInsertarAdvertencia.Parameters["@consecutivo"].Value = consecutivo; cmdInsertarAdvertencia.Parameters["@FecRegistro"].Value = DateTime.Now; cmdInsertarAdvertencia.Parameters["@DescripcionError"].Value = itemAdv.mensaje; if (cmdInsertarAdvertencia.ExecuteNonQuery() > 0) { logFacturas.Info($"Se Inserta Detalle de Advertencias: Codigo Advertencia{itemAdv.codigo} Mensaje Advertencia:{itemAdv.mensaje}"); valorRpta = nroFactura.ToString(); } else { logFacturas.Info($"No es Posible Insertar Detalle de Advertencias: Codigo Advertencia{itemAdv.codigo} Mensaje Advertencia:{itemAdv.mensaje}"); valorRpta = nroFactura.ToString(); } } } else { logFacturas.Info($"No existen advertencias de DIAN !!! factura{nroFactura}"); valorRpta = nroFactura.ToString(); } valorRpta = nroFactura.ToString(); } else { logFacturas.Info("No fue Posible Realizar la Descarga de Archivos de la Factura con Identificadotr:" + respuesta.resultado.UUID); valorRpta = "99"; } } } catch (NotSupportedException nSuppExp) { logFacturas.Info("Se ha presentado una NotSupportedException durante la descarga de los objetos de la Factura:" + nSuppExp.Message + " " + nSuppExp.InnerException.Message); valorRpta = "9X"; } catch (ArgumentNullException argNull) { logFacturas.Info("Se ha presentado una ArgumentNullException durante la descarga de los objetos de la Factura:" + argNull.Message + " " + argNull.InnerException.Message); valorRpta = "9X"; } catch (WebException webEx1) { logFacturas.Info("Se ha presentado una Falla durante la descarga de los objetos de la factura:" + webEx1.Message + " " + webEx1.InnerException.Message); logFacturas.Warn($"Pila de Mensajes:::::{webEx1.StackTrace}"); valorRpta = "93"; } catch (Exception exx) { logFacturas.Info($"No fue posible descargar los archivos.PDF, XML y QR !!! Causa:{exx.Message} Pila:{exx.StackTrace}"); valorRpta = "98"; } } }