示例#1
0
        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);
        }
示例#2
0
        /// <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;
    }
示例#4
0
 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";
 }
示例#6
0
        /// <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
        }
示例#7
0
        /// <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);
            }
        }
示例#8
0
        /// <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);
        }
示例#9
0
        /// <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);
        }
示例#10
0
        /// <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());
            }
        }
示例#11
0
        /// <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);
        }
示例#12
0
        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);
        }
示例#13
0
        /// <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;
            }
        }
示例#14
0
        /// <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);
        }
示例#15
0
        /// <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;
            }
        }
示例#16
0
        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);
        }
示例#17
0
        /// <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
        }
示例#18
0
        /// <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
        }
示例#19
0
 /// <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();
 }
示例#20
0
 public void Limpiar()
 {
     clienteJuridico = null;
     clienteNatural  = null;
 }
示例#21
0
        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";
                                    }
                                }
                            }