Exemple #1
0
 public static ResultadoTransaccion GuardarInformeVisita(clsVisitaInforme informe)
 {
     if (informe.IsNew)
         return AccesoDatos.Calendarios.clsCalendarioADO.GuardarInformeVisita(informe);
     else
         return AccesoDatos.Calendarios.clsCalendarioADO.ActualizarInformeVisita(informe);
 }
Exemple #2
0
 public static ResultadoTransaccion GuardarInformeVisita(clsVisitaInforme informe)
 {
     if (informe.IsNew)
     {
         return(AccesoDatos.Calendarios.clsCalendarioADO.GuardarInformeVisita(informe));
     }
     else
     {
         return(AccesoDatos.Calendarios.clsCalendarioADO.ActualizarInformeVisita(informe));
     }
 }
Exemple #3
0
        /// <summary>
        /// Guarda Borrador
        /// </summary>
        private void MenuGuardar_Click(object sender, EventArgs e)
        {
            var mail = new EnvioMailObject();

            if (!ValidarFormulario())
            {
                return;
            }

            ResultadoTransaccion resultado = GuardarInformeVisita(false);

            if (resultado.Estado == Enums.EstadoTransaccion.Aceptada)
            {
                clsVisitaInforme informe = (clsVisitaInforme)resultado.ObjetoTransaccion;

                if (Visita.EstadoBD == Enums.VisitaEstado.No_Realizada)
                {
                    Visita.EstadoBD = Enums.VisitaEstado.Realizada_Con_Informe_Fuera_De_Plazo;
                }
                else
                {
                    Visita.EstadoBD = Enums.VisitaEstado.Realizada_Con_Informe;
                }

                LogicaNegocios.Calendarios.clsCalendarios.GuardarVisita(Visita);

                Visita.Informvisita = new clsVisitaInforme();
                Visita.Informvisita = informe;
                mail.EnviarEmailInformeVisita(informe, Visita);
                //Utils.EnvioEmail.EnviarEmailInformeVisita(informe, Visita);

                EnviarEmailRequiereRespuesta();

                MessageBox.Show("El Informe a sido guardado exitosamente", "Informe de visita", MessageBoxButtons.OK,
                                MessageBoxIcon.Information);


                Instancia = null;
                this.Close();
            }
            else
            {
                MessageBox.Show(resultado.Descripcion, "Calendario", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Exemple #4
0
 public static IList <clsInformeRespuestaUsuario> ListarUsuariosParaRespuestaInforme(clsVisitaInforme informe)
 {
     return(AccesoDatos.Calendarios.clsCalendarioADO.ListarUsuariosParaRespuestaInforme(informe));
 }
Exemple #5
0
        private void DominioAVista(clsVisitaInforme informe)
        {
            if (informe.EspectativaCierre == -1)
            {
                txtExpectativaCierre.Text = "";
            }
            else
            {
                txtExpectativaCierre.Text = informe.EspectativaCierre.ToString();
            }

            txtResumen.Text             = informe.ResumenVisita;
            chkOtroTema.Checked         = informe.OtroTema;
            chkTieneEspectativa.Checked = informe.TieneEspectativaCierre;

            for (int i = 0; i <= lstProductos.Items.Count - 1; i++)
            {
                clsTipoProducto producto = (clsTipoProducto)lstProductos.Items[i];
                foreach (clsVisitaInformeProductos productoInforme in informe.Productos)
                {
                    if (producto.Id == productoInforme.Producto.Id)
                    {
                        lstProductos.SetItemChecked(i, true);
                        break;
                    }
                }
            }


            for (int i = 0; i <= lstTraficos.Items.Count - 1; i++)
            {
                Entidades.Ventas.Traficos.clsTrafico trafico = (Entidades.Ventas.Traficos.clsTrafico)lstTraficos.Items[i];
                foreach (clsVisitaInformeTrafico traficoInforme in informe.Traficos)
                {
                    if (trafico.Id == traficoInforme.Trafico.Id)
                    {
                        lstTraficos.SetItemChecked(i, true);
                        break;
                    }
                }
            }

            if (informe.FollowUp != null)
            {
                if (informe.FollowUp.FechaFollowUp.HasValue)
                {
                    txtFollowUp.Text = informe.FollowUp.FechaFollowUp.Value.ToShortDateString();
                }

                if (informe.FollowUp.TipoActividad == null)
                {
                    cboTipoActividad.SelectedIndex = 0;
                }
                else
                {
                    cboTipoActividad.SelectedItem = informe.FollowUp.TipoActividad;
                }

                txtDescripcionFollowUp.Text = informe.FollowUp.Descripcion;
            }


            //for (int i = 0; i <= lstTraficos.Items.Count - 1; i++)
            //{
            //    clsTipoProducto producto = (clsTipoProducto)lstProductos.Items[i];
            //    foreach (clsVisitaInformeProductos productoInforme in informe.Productos)
            //    {
            //        if (producto.Id == productoInforme.Id)
            //        {
            //            lstProductos.SetItemChecked(i, true);
            //            break;
            //        }
            //    }
            //}
        }
Exemple #6
0
        private void DominioAVista(clsVisitaInforme informe)
        {
            if (informe.EspectativaCierre == -1)
                txtExpectativaCierre.Text = "";
            else
                txtExpectativaCierre.Text = informe.EspectativaCierre.ToString();

            txtResumen.Text = informe.ResumenVisita;
            chkOtroTema.Checked = informe.OtroTema;
            chkTieneEspectativa.Checked = informe.TieneEspectativaCierre;

            for (int i = 0; i <= lstProductos.Items.Count - 1; i++)
            {
                clsTipoProducto producto = (clsTipoProducto)lstProductos.Items[i];
                foreach (clsVisitaInformeProductos productoInforme in informe.Productos)
                {
                    if (producto.Id == productoInforme.Producto.Id)
                    {
                        lstProductos.SetItemChecked(i, true);
                        break;
                    }
                }
            }

            for (int i = 0; i <= lstTraficos.Items.Count - 1; i++)
            {
                Entidades.Ventas.Traficos.clsTrafico trafico = (Entidades.Ventas.Traficos.clsTrafico)lstTraficos.Items[i];
                foreach (clsVisitaInformeTrafico traficoInforme in informe.Traficos)
                {
                    if (trafico.Id == traficoInforme.Trafico.Id)
                    {
                        lstTraficos.SetItemChecked(i, true);
                        break;
                    }
                }
            }

            if(informe.FollowUp != null)
            {
                if (informe.FollowUp.FechaFollowUp.HasValue)
                    txtFollowUp.Text = informe.FollowUp.FechaFollowUp.Value.ToShortDateString();

                if (informe.FollowUp.TipoActividad == null)
                    cboTipoActividad.SelectedIndex = 0;
                else
                    cboTipoActividad.SelectedItem = informe.FollowUp.TipoActividad;

                txtDescripcionFollowUp.Text = informe.FollowUp.Descripcion;
            }

            //for (int i = 0; i <= lstTraficos.Items.Count - 1; i++)
            //{
            //    clsTipoProducto producto = (clsTipoProducto)lstProductos.Items[i];
            //    foreach (clsVisitaInformeProductos productoInforme in informe.Productos)
            //    {
            //        if (producto.Id == productoInforme.Id)
            //        {
            //            lstProductos.SetItemChecked(i, true);
            //            break;
            //        }
            //    }
            //}
        }
Exemple #7
0
 public static IList<clsInformeRespuestaUsuario> ListarUsuariosParaRespuestaInforme(clsVisitaInforme informe)
 {
     return AccesoDatos.Calendarios.clsCalendarioADO.ListarUsuariosParaRespuestaInforme(informe);
 }
Exemple #8
0
        public static ResultadoTransaccion ObtenerInformeVisitaPor(Int64 IdInforme, Int64 IdVisita)
        {
            clsVisitaInforme informe = null;
            resTransaccion = new ResultadoTransaccion();
            SqlConnection cnn = BaseDatos.NuevaConexion();
            try {
                objParams = SqlHelperParameterCache.GetSpParameterSet(cnn, "SP_C_CALENDARIO_VISITA_INFORME");
                objParams[0].Value = IdInforme;
                objParams[1].Value = IdVisita;

                DataSet ds = SqlHelper.ExecuteDataset(cnn, CommandType.StoredProcedure, "SP_C_CALENDARIO_VISITA_INFORME", objParams);

                if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0) {
                    informe = new clsVisitaInforme();
                    informe.Id = Convert.ToInt64(ds.Tables[0].Rows[0]["Id"]);
                    //informe.Visita = ObtenerVisitaPorId(Convert.ToInt64(ds.Tables[0].Rows[0]["IdVisita"].ToString()));

                    if (ds.Tables[0].Rows[0]["EspectativaCierre"] is DBNull)
                        informe.EspectativaCierre = -1;
                    else
                        informe.EspectativaCierre = Convert.ToInt16(ds.Tables[0].Rows[0]["EspectativaCierre"].ToString());

                    informe.ResumenVisita = ds.Tables[0].Rows[0]["ResumenVisita"].ToString();
                    informe.IdUsuario = Convert.ToInt64(ds.Tables[0].Rows[0]["IdUsuario"].ToString());
                    informe.Productos = ObtenerProductosInformeVisita(informe.Id);
                    informe.Traficos = ObtenerTraficosInformeVisita(informe.Id);
                    if (ds.Tables[0].Rows[0]["TieneEspectativaCierre"] is DBNull)
                        informe.TieneEspectativaCierre = false;
                    else
                        informe.TieneEspectativaCierre =
                            Convert.ToBoolean(ds.Tables[0].Rows[0]["TieneEspectativaCierre"]);

                    if (ds.Tables[0].Rows[0]["OtroTema"] is DBNull)
                        informe.OtroTema = false;
                    else
                        informe.OtroTema = Convert.ToBoolean(ds.Tables[0].Rows[0]["OtroTema"]);

                    if (ds.Tables[0].Rows[0]["RequiereRespuesta"] is DBNull)
                        informe.RequiereRespuesta = false;
                    else
                        informe.RequiereRespuesta = Convert.ToBoolean(ds.Tables[0].Rows[0]["RequiereRespuesta"]);

                    if (ds.Tables[0].Rows[0]["EsBorrador"] is DBNull)
                        informe.EsBorrador = false;
                    else
                        informe.EsBorrador = Convert.ToBoolean(ds.Tables[0].Rows[0]["EsBorrador"]);

                    var FollowUP = AccesoDatos.Clientes.clsClienteMasterADO.ObtenerFollowUpClientePorInforme(informe.Id);

                    if (FollowUP != null) {
                        informe.FollowUp = FollowUP[0];
                    }

                    //if (ds.Tables[0].Rows[0]["FechaFollowUp"] is DBNull)
                    //    informe.FollowUp = null;
                    //else
                    //    informe.FollowUp = Convert.ToDateTime(ds.Tables[0].Rows[0]["FechaFollowUp"].ToString());

                }

                resTransaccion.Estado = Enums.EstadoTransaccion.Aceptada;
                resTransaccion.ObjetoTransaccion = informe;
            } catch (Exception ex) {
                resTransaccion.Estado = Enums.EstadoTransaccion.Rechazada;
                Log.EscribirLog(ex.Message);
            } finally {
                cnn.Close();
            }

            return resTransaccion;
        }
Exemple #9
0
        public static IList<clsInformeRespuestaUsuario> ListarUsuariosParaRespuestaInforme(clsVisitaInforme informe)
        {
            SqlDataReader dreader = null;
            clsInformeRespuestaUsuario comentario = null;
            IList<clsInformeRespuestaUsuario> listcomentarios = new List<clsInformeRespuestaUsuario>();
            try {
                objParams = SqlHelperParameterCache.GetSpParameterSet(BaseDatos.Conexion(), "SP_C_CALENDARIO_VISITA_INFORME_COMENTARIO_USUARIO");
                if (informe != null) objParams[0].Value = informe.Id;

                SqlCommand command = new SqlCommand("SP_C_CALENDARIO_VISITA_INFORME_COMENTARIO_USUARIO", BaseDatos.Conexion());
                command.Parameters.AddRange(objParams);
                command.CommandType = CommandType.StoredProcedure;
                dreader = command.ExecuteReader();

                while (dreader.Read()) {
                    comentario = new clsInformeRespuestaUsuario();
                    comentario.Id = Convert.ToInt64(dreader["Id"]);
                    comentario.IdInforme = Convert.ToInt64(dreader["IdInforme"]);
                    comentario.Usuario =
                        Usuarios.clsUsuarioADO.ObtenerUsuarioPorId(Convert.ToInt16(dreader["IdUsuario"]));

                    listcomentarios.Add(comentario);
                }

            } catch (Exception ex) {
                Base.Log.Log.EscribirLog(ex.Message);
            } finally {
                BaseDatos.CerrarConexion();
            }

            return listcomentarios;
        }
Exemple #10
0
        public static ResultadoTransaccion ActualizarInformeVisita(clsVisitaInforme informe)
        {
            SqlTransaction transaction = BaseDatos.Conexion().BeginTransaction();
            ResultadoTransaccion resSalida = new ResultadoTransaccion();

            try {
                resTransaccion = new ResultadoTransaccion();
                resTransaccion = ModificarInformVisita(informe, transaction);
                if (resTransaccion.Estado == Enums.EstadoTransaccion.Aceptada) {

                    resTransaccion = new ResultadoTransaccion();
                    resTransaccion = EliminarDatosInformeVisita(informe, transaction);
                    if (resTransaccion.Estado == Enums.EstadoTransaccion.Rechazada) {
                        throw new Exception(resTransaccion.Descripcion);
                    }

                    foreach (clsVisitaInformeProductos producto in informe.Productos) {
                        resTransaccion = new ResultadoTransaccion();
                        resTransaccion = AgregarProductoInformVisita(producto.Producto.Id, informe.Id, transaction);
                        if (resTransaccion.Estado == Enums.EstadoTransaccion.Rechazada)
                            throw new Exception(resTransaccion.Descripcion);
                    }

                    foreach (clsVisitaInformeTrafico trafico in informe.Traficos) {
                        resTransaccion = new ResultadoTransaccion();
                        resTransaccion = AgregarTraficoInformVisita(trafico.Trafico.Id, informe.Id, transaction);
                        if (resTransaccion.Estado == Enums.EstadoTransaccion.Rechazada)
                            throw new Exception(resTransaccion.Descripcion);
                    }

                    resTransaccion = new ResultadoTransaccion();
                    resTransaccion = EliminarUsuarioParaRespuestaInformeVisita(informe, transaction);
                    if (resTransaccion.Estado == Enums.EstadoTransaccion.Rechazada) {
                        throw new Exception(resTransaccion.Descripcion);
                    }

                    foreach (var param in informe.UsuariosParaRespuesta) {
                        param.IdInforme = informe.Id;
                        resTransaccion = new ResultadoTransaccion();
                        resTransaccion = AgregarUsuarioRequiereRespuesta(param, transaction);
                        if (resTransaccion.Estado == Enums.EstadoTransaccion.Rechazada)
                            throw new Exception(resTransaccion.Descripcion);
                    }

                    resTransaccion = new ResultadoTransaccion();
                    resTransaccion =
                        AccesoDatos.Clientes.clsClienteMasterADO.ModificarFollowUpClienteMaster(informe.FollowUp, transaction);
                    if (resTransaccion.Estado == Enums.EstadoTransaccion.Rechazada) {
                        throw new Exception(resTransaccion.Descripcion);
                    }

                    transaction.Commit();

                    resSalida.Estado = Enums.EstadoTransaccion.Aceptada;
                    resSalida.ObjetoTransaccion = informe;

                } else {
                    throw new Exception(resTransaccion.Descripcion);
                }
            } catch (Exception ex) {
                transaction.Rollback();
                resSalida.Estado = Enums.EstadoTransaccion.Rechazada;
                resSalida.Descripcion = ex.Message;
            } finally {
                BaseDatos.CerrarConexion();
            }

            return resSalida;
        }
Exemple #11
0
        private static ResultadoTransaccion ModificarInformVisita(clsVisitaInforme informe, SqlTransaction transaction)
        {
            Int64 idInformeVisita = 0;
            resTransaccion = new ResultadoTransaccion();
            try {
                objParams = SqlHelperParameterCache.GetSpParameterSet(BaseDatos.Conexion(), "SP_A_CALENDARIO_VISITA_INFORME");
                objParams[0].Value = informe.Visita.Id;
                objParams[1].Value = informe.EspectativaCierre;
                objParams[2].Value = informe.FollowUp.FechaFollowUp;
                objParams[3].Value = informe.ResumenVisita;
                objParams[4].Value = informe.IdUsuario;
                objParams[5].Value = informe.TieneEspectativaCierre;
                objParams[6].Value = informe.OtroTema;
                objParams[7].Value = informe.EsBorrador;
                objParams[8].Value = informe.Id;
                objParams[9].Value = informe.RequiereRespuesta;

                SqlCommand command = new SqlCommand("SP_A_CALENDARIO_VISITA_INFORME", BaseDatos.Conexion());
                command.Transaction = transaction;
                command.Parameters.AddRange(objParams);
                command.CommandType = CommandType.StoredProcedure;
                command.ExecuteNonQuery();

                resTransaccion.Estado = Enums.EstadoTransaccion.Aceptada;

                //Registrar Actividad
                LogActividadUsuarios log = new LogActividadUsuarios(informe.GetType().ToString(), idInformeVisita, Enums.TipoActividadUsuario.Edito, Base.Usuario.UsuarioConectado.Usuario);
                LogActividades.clsLogActividadUsuariosADO.GuardaActividad(log);

            } catch (Exception ex) {
                resTransaccion.Estado = Enums.EstadoTransaccion.Rechazada;
                resTransaccion.Descripcion = ex.Message;
                Log.EscribirLog(ex.Message);
            }
            return resTransaccion;
        }
Exemple #12
0
        private static ResultadoTransaccion EliminarUsuarioParaRespuestaInformeVisita(clsVisitaInforme informe, SqlTransaction transaction)
        {
            resTransaccion = new ResultadoTransaccion();
            try {
                objParams = SqlHelperParameterCache.GetSpParameterSet(BaseDatos.Conexion(), "SP_E_CALENDARIO_VISITA_INFORME_COMENTARIO_USUARIO");
                objParams[0].Value = informe.Id;

                SqlCommand command = new SqlCommand("SP_E_CALENDARIO_VISITA_INFORME_COMENTARIO_USUARIO", BaseDatos.Conexion());
                command.Transaction = transaction;
                command.Parameters.AddRange(objParams);
                command.CommandType = CommandType.StoredProcedure;
                command.ExecuteNonQuery();

                resTransaccion.Estado = Enums.EstadoTransaccion.Aceptada;

            } catch (Exception ex) {
                resTransaccion.Estado = Enums.EstadoTransaccion.Rechazada;
                resTransaccion.Descripcion = ex.Message;
                Log.EscribirLog(ex.Message);
            }
            return resTransaccion;
        }
Exemple #13
0
        public void EnviarEmailInformeVisita(clsVisitaInforme informe, clsVisita VisitaActual)
        {
            string EmailBody = "";
            string productos = "";
            string traficos = "";
            string RecFijos = System.Configuration.ConfigurationSettings.AppSettings.Get("EmailInformeFijo");
            string RecLCL = System.Configuration.ConfigurationSettings.AppSettings.Get("EmailInformeLCL");
            string RecFCL = System.Configuration.ConfigurationSettings.AppSettings.Get("EmailInformeFCL");
            string RecAereo = System.Configuration.ConfigurationSettings.AppSettings.Get("EmailInformeAereo");
            string EmailInforme = System.Configuration.ConfigurationSettings.AppSettings.Get("EmailInformeVisita");
            string espectativas = "";

            try
            {
                foreach (var producto in informe.Productos)
                {
                    productos += producto.Producto.Nombre + " / ";
                }

                foreach (var trafico in informe.Traficos)
                {
                    traficos += trafico.Trafico.Nombre + " / ";
                }

                foreach (var asistente in VisitaActual.AsistentesCraft)
                {
                    if (asistente.Confirmo == Enums.VisitaEstadoAsistente.ConfirmoAsistencia)
                    {
                        StringBuilder sb = new StringBuilder(EmailInforme);
                        sb.Replace("[ASISTENTE]", asistente.Usuario.NombreCompleto);

                        if (VisitaActual.Cliente == null)
                        {
                            sb.Replace("[CLIENTE]", "");
                        }
                        else
                        {
                            if (VisitaActual.Cliente.NombreFantasia.Trim() != "")
                                sb.Replace("[CLIENTE]", VisitaActual.Cliente.NombreFantasia);
                            else
                                sb.Replace("[CLIENTE]", VisitaActual.Cliente.NombreCompañia);
                        }

                        sb.Replace("[PRODUCTOS]", productos);
                        sb.Replace("[TRAFICOS]", traficos);

                        if (informe.TieneEspectativaCierre)
                            espectativas = " SI (" + informe.EspectativaCierre + "%)";
                        else
                            espectativas = " NO  ";

                        sb.Replace("[ESPECTATIVAS]", espectativas);
                        if (informe.FollowUp.FechaFollowUp != null)
                            sb.Replace("[FOLLOWUP] ", informe.FollowUp.FechaFollowUp.Value.ToShortDateString());
                        sb.Replace("[RESUMEN]", informe.ResumenVisita);
                        sb.Replace("[SALTO]", "\n");

                        EmailBody = sb.ToString();
                        string asunto = "Informe Visita: " + VisitaActual.Asunto;

                        EnviarEmail(asistente.Usuario.Email, asunto, EmailBody);

                        LogEnviarEmail(Enums.VisitaTipoEmail.InformeVisitaConfirmados, VisitaActual, EmailBody, asunto);

                    }
                }

                //Enviar informe a Customers Services
                foreach (var producto in VisitaActual.Cliente.ProductosPreferidos)
                {
                    if (producto.Customer != null)
                    {
                        StringBuilder sb = new StringBuilder(EmailInforme);
                        sb.Replace("[ASISTENTE]", producto.Customer.NombreCompleto);

                        if (VisitaActual.Cliente == null)
                        {
                            sb.Replace("[CLIENTE]", "");
                        }
                        else
                        {
                            if (VisitaActual.Cliente.NombreFantasia.Trim() != "")
                                sb.Replace("[CLIENTE]", VisitaActual.Cliente.NombreFantasia);
                            else
                                sb.Replace("[CLIENTE]", VisitaActual.Cliente.NombreCompañia);
                        }

                        sb.Replace("[PRODUCTOS]", productos);
                        sb.Replace("[TRAFICOS]", traficos);

                        if (informe.TieneEspectativaCierre)
                            espectativas = " SI (" + informe.EspectativaCierre + "%)";
                        else
                            espectativas = " NO  ";

                        sb.Replace("[ESPECTATIVAS]", espectativas);
                        if (informe.FollowUp.FechaFollowUp != null)
                            sb.Replace("[FOLLOWUP] ", informe.FollowUp.FechaFollowUp.Value.ToShortDateString());
                        sb.Replace("[RESUMEN]", informe.ResumenVisita);
                        sb.Replace("[SALTO]", "\n");

                        EmailBody = sb.ToString();
                        string asunto = "Informe Visita: " + VisitaActual.Asunto;

                        EnviarEmail(producto.Customer.Email, asunto, EmailBody);
                        LogEnviarEmail(Enums.VisitaTipoEmail.InformeVisitaConfirmados, VisitaActual, EmailBody, asunto);

                    }
                }

                //Receptores Fijos
                string[] fijos = RecFijos.Split(';');
                string[] lcl = RecLCL.Split(';');
                string[] fcl = RecFCL.Split(';');
                string[] aereo = RecAereo.Split(';');

                foreach (var fijo in fijos)
                {
                    clsUsuario usuario = ProyectoCraft.LogicaNegocios.Usuarios.clsUsuarios.ObtenerUsuarioPorEmail(fijo);
                    if (usuario != null)
                    {
                        EnviarInformeReceptoresFijos(VisitaActual, usuario, productos, traficos,
                                                     Enums.VisitaTipoEmail.InformeVisitaFijos);
                    }
                }

                bool esLCL = false;
                bool esFCL = false;
                bool esAereo = false;

                foreach (var prod in VisitaActual.Informvisita.Productos)
                {
                    if (prod.Producto.EsLCL)
                        esLCL = true;
                    if (prod.Producto.EsFCL)
                        esFCL = true;
                    if (prod.Producto.EsAereo)
                        esAereo = true;
                }

                //busacr productos clientes

                IList<ProyectoCraft.Entidades.Clientes.clsClientesProductos> productoscliente = null;

                if (VisitaActual.Cliente == null)
                    productoscliente = new List<clsClientesProductos>();
                else
                    productoscliente =
                        ProyectoCraft.LogicaNegocios.Clientes.clsClientesMaster.ObtenerProductosPreferidos(
                            VisitaActual.Cliente.Id);

                foreach (var prod in productoscliente)
                {

                    if (!esLCL)
                        if (prod.Producto.EsLCL) esLCL = true;

                    if (!esFCL)
                        if (prod.Producto.EsFCL) esFCL = true;

                    if (!esAereo)
                        if (prod.Producto.EsAereo) esAereo = true;
                }

                if (esLCL)
                {
                    foreach (var fijo in lcl)
                    {
                        clsUsuario usuario =
                            ProyectoCraft.LogicaNegocios.Usuarios.clsUsuarios.ObtenerUsuarioPorEmail(fijo);
                        if (usuario != null)
                        {
                            EnviarInformeReceptoresFijos(VisitaActual, usuario, productos, traficos,
                                                         Enums.VisitaTipoEmail.InformeVisitaEncNegocio);
                        }
                    }
                }

                if (esFCL)
                {
                    foreach (var fijo in fcl)
                    {
                        clsUsuario usuario =
                            ProyectoCraft.LogicaNegocios.Usuarios.clsUsuarios.ObtenerUsuarioPorEmail(fijo);
                        if (usuario != null)
                        {
                            EnviarInformeReceptoresFijos(VisitaActual, usuario, productos, traficos,
                                                         Enums.VisitaTipoEmail.InformeVisitaEncNegocio);
                        }
                    }
                }

                if (esAereo)
                {
                    foreach (var fijo in aereo)
                    {
                        clsUsuario usuario =
                            ProyectoCraft.LogicaNegocios.Usuarios.clsUsuarios.ObtenerUsuarioPorEmail(fijo);
                        if (usuario != null)
                        {
                            EnviarInformeReceptoresFijos(VisitaActual, usuario, productos, traficos,
                                                         Enums.VisitaTipoEmail.InformeVisitaEncNegocio);
                        }
                    }
                }

                //Enviar Email a Customers
                foreach (var customer in productoscliente)
                {
                    if (customer.Customer != null)
                    {
                        EnviarInformeReceptoresFijos(VisitaActual, customer.Customer, productos, traficos,
                                                     Enums.VisitaTipoEmail.InformeVisitaCustomerService);
                    }
                }

            }
            catch (Exception ex)
            {
                Log.EscribirLog(ex.Message);
            }
        }