/// <summary>
        /// Listado de avance de ventas por mes
        /// </summary>
        /// <param name="CodProducto"> Codigo de producto </param>
        /// <returns> Listado de avance de ventas por mes </returns>
        public List <AvanceVentasPOMes> TraerAvanceVentasPOMes(int CodProducto)
        {
            List <AvanceVentasPOMes> lista = new List <AvanceVentasPOMes>();

            try
            {
                IDataReader reader;
                sbQuery = new StringBuilder();

                sbQuery.Append(" SELECT CodProducto               ");
                sbQuery.Append("      ,Mes                     ");
                sbQuery.Append("      ,CodTipoFinanciacion     ");
                sbQuery.Append("      ,Valor                   ");
                sbQuery.Append("      ,Observaciones           ");
                sbQuery.Append("      ,CodContacto             ");
                sbQuery.Append("      ,ObservacionesInterventor");
                sbQuery.Append("      ,Aprobada                ");
                sbQuery.Append("  FROM AvanceVentasPOMes        ");
                sbQuery.Append("  WHERE CodProducto = " + CodProducto);

                db.Open();
                reader = db.ExecuteDataReader(sbQuery.ToString(), CommandType.Text);
                AvanceVentasPOMes oAvance = new AvanceVentasPOMes();
                while (reader.Read())
                {
                    oAvance                     = new AvanceVentasPOMes();
                    oAvance.CodProducto         = Convert.ToInt32(reader["CodProducto"]);
                    oAvance.Mes                 = Convert.ToByte(reader["Mes"]);
                    oAvance.CodTipoFinanciacion = Convert.ToByte(reader["CodTipoFinanciacion"]);
                    oAvance.Valor               = Convert.ToDecimal(reader["Valor"]);
                    oAvance.Observaciones       = reader["Observaciones"].ToString();
                    if (!DBNull.Value.Equals(reader["CodContacto"]))
                    {
                        oAvance.CodContacto = Convert.ToInt32(reader["CodContacto"]);
                    }
                    oAvance.ObservacionesInterventor = reader["ObservacionesInterventor"].ToString();
                    if (!DBNull.Value.Equals(reader["Aprobada"]))
                    {
                        oAvance.Aprobada = Convert.ToBoolean(reader["Aprobada"]);
                    }

                    lista.Add(oAvance);
                }
                reader.Close();
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                db.Close();
            }
            return(lista);
        }
        private void insertarHistorico(AvanceVentasPOMes avance, decimal _Ingreso, int _CodProyecto)
        {
            HistoricoAvanceModel avanceHis = new HistoricoAvanceModel
            {
                codActividad           = avance.CodProducto,
                codContacto            = usuario.IdContacto,
                FechaAvanceEmprendedor = avance.FechaAvance,
                Mes                    = avance.Mes,
                Ventas                 = avance.Valor,
                Ingreso                = _Ingreso,
                fechaRegistro          = DateTime.Now,
                ObservacionEmprendedor = avance.Observaciones,
                ObservacionInterventor = avance.ObservacionesInterventor,
                FechaAvanceInterventor = avance.FechaAprobacion,
                Aprobada               = avance.Aprobada,
                codProyecto            = _CodProyecto
            };

            AvancesInterventoriaReg.insertarHistoricoVentas(avanceHis);
        }
        private void Metodos()
        {
            switch (B_Acion.Text)
            {
            case "Crear":
                var mensaje = Validar(B_Acion.Text);
                if (string.IsNullOrEmpty(mensaje))
                {
                    var consultar = (from av in consultas.Db.AvanceVentasPOMes
                                     where av.CodProducto == CodVenta && av.Mes == Mes
                                     select av).ToList();

                    if (consultar.Count == 0)
                    {
                        var avance = new AvanceVentasPOMes
                        {
                            CodProducto              = CodVenta,
                            Mes                      = Convert.ToByte(Mes),
                            CodTipoFinanciacion      = 1,
                            Valor                    = decimal.Parse((!string.IsNullOrEmpty(txt_sueldo_obtenido.Text)) ? txt_sueldo_obtenido.Text : "0"),
                            Observaciones            = txt_observaciones.Text,
                            CodContacto              = usuario.IdContacto,
                            ObservacionesInterventor = "",
                            Aprobada                 = false,
                            FechaAvance              = DateTime.Now
                        };

                        consultas.Db.AvanceVentasPOMes.InsertOnSubmit(avance);
                        consultas.Db.SubmitChanges();

                        var avance2 = new AvanceVentasPOMes
                        {
                            CodProducto              = CodVenta,
                            Mes                      = Convert.ToByte(Mes),
                            CodTipoFinanciacion      = 2,
                            Valor                    = decimal.Parse((!string.IsNullOrEmpty(txt_prestaciones_obtenidas.Text)) ? txt_prestaciones_obtenidas.Text : "0"),
                            Observaciones            = txt_observaciones.Text,
                            CodContacto              = usuario.IdContacto,
                            ObservacionesInterventor = "",
                            Aprobada                 = false,
                            FechaAvance              = DateTime.Now
                        };

                        consultas.Db.AvanceVentasPOMes.InsertOnSubmit(avance2);
                        consultas.Db.SubmitChanges();

                        //Consultar Id Interventor para agendar tarea
                        var datos = (from ei in consultas.Db.EmpresaInterventors
                                     join ee in consultas.Db.Empresas on ei.CodEmpresa equals ee.id_empresa
                                     join p in consultas.Db.Proyecto on ee.codproyecto equals p.Id_Proyecto
                                     where ee.codproyecto == codProyecto && ei.Inactivo == false
                                     select new datosAgendar
                        {
                            idContacto = (int)ei.CodContacto,
                            idProyecto = (int)p.Id_Proyecto,
                            nombre = p.NomProyecto
                        }).ToList();

                        //Insertar Historico
                        insertarHistorico(avance, avance2.Valor, codProyecto);

                        var asunto = "Revisar Actividad de ventas. Se ha creado una actividad.";
                        TareaAgendar(CodVenta, codProyecto, usuario.IdContacto, datos[0].idContacto, datos[0].nombre, NombreVenta,
                                     asunto, txt_observaciones.Text.Trim());
                    }
                    Session["CodVenta"] = null;
                    Session["Accion"]   = null;
                    Session["MesVenta"] = null;
                    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "Mensaje", "alert('Avance registrado.'); window.close();", true);
                }
                else
                {
                    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "Mensaje", "alert('" + mensaje + "');", true);
                }
                break;

            case "Actualizar":
                if (usuario.CodGrupo == Constantes.CONST_Emprendedor)
                {
                    mensaje = Validar(B_Acion.Text);
                    if (string.IsNullOrEmpty(mensaje))
                    {
                        var avancesVentas = (from aa in consultas.Db.AvanceVentasPOMes
                                             where aa.CodProducto == CodVenta && aa.Mes == Mes
                                             select aa).ToList();

                        foreach (var avance in avancesVentas)
                        {
                            avance.FechaAvance   = DateTime.Now;
                            avance.Observaciones = txt_observaciones.Text.Trim();
                            avance.Valor         = (avance.CodTipoFinanciacion == 1) ? decimal.Parse((!string.IsNullOrEmpty(txt_sueldo_obtenido.Text)) ? txt_sueldo_obtenido.Text : "0") : decimal.Parse((!string.IsNullOrEmpty(txt_prestaciones_obtenidas.Text)) ? txt_prestaciones_obtenidas.Text : "0");
                        }

                        var avancesActividadTipo1 = (from ap in consultas.Db.AvanceVentasPOMes
                                                     where
                                                     ap.CodProducto == CodVenta &&
                                                     ap.Mes == Mes &&
                                                     ap.CodTipoFinanciacion == 1
                                                     select ap).ToList();

                        if (avancesActividadTipo1.Any())
                        {
                            foreach (var avance in avancesActividadTipo1)
                            {
                                avance.FechaAvance   = DateTime.Now;
                                avance.Observaciones = txt_observaciones.Text.Trim();
                                avance.Valor         = (avance.CodTipoFinanciacion == 1) ? decimal.Parse((!string.IsNullOrEmpty(txt_sueldo_obtenido.Text)) ? txt_sueldo_obtenido.Text : "0") : decimal.Parse((!string.IsNullOrEmpty(txt_prestaciones_obtenidas.Text)) ? txt_prestaciones_obtenidas.Text : "0");
                            }
                        }
                        else
                        {
                            var avanceMes = new AvanceVentasPOMes()
                            {
                                Mes                      = Convert.ToByte(Mes),
                                CodProducto              = CodVenta,
                                CodTipoFinanciacion      = 1,
                                Aprobada                 = false,
                                CodContacto              = usuario.IdContacto,
                                Observaciones            = txt_observaciones.Text.Trim(),
                                ObservacionesInterventor = string.Empty,
                                Valor                    = decimal.Parse((!string.IsNullOrEmpty(txt_sueldo_obtenido.Text)) ? txt_sueldo_obtenido.Text : "0")
                            };

                            consultas.Db.AvanceVentasPOMes.InsertOnSubmit(avanceMes);
                        }

                        var avancesActividadTipo2 = (from ap in consultas.Db.AvanceVentasPOMes
                                                     where
                                                     ap.CodProducto == CodVenta &&
                                                     ap.Mes == Mes &&
                                                     ap.CodTipoFinanciacion == 2
                                                     select ap).ToList();

                        if (avancesActividadTipo2.Any())
                        {
                            foreach (var avance in avancesActividadTipo2)
                            {
                                avance.FechaAvance   = DateTime.Now;
                                avance.Observaciones = txt_observaciones.Text.Trim();
                                avance.Valor         = (avance.CodTipoFinanciacion == 1) ? decimal.Parse((!string.IsNullOrEmpty(txt_sueldo_obtenido.Text)) ? txt_sueldo_obtenido.Text : "0") : decimal.Parse((!string.IsNullOrEmpty(txt_prestaciones_obtenidas.Text)) ? txt_prestaciones_obtenidas.Text : "0");
                            }
                        }
                        else
                        {
                            var avanceMes = new AvanceVentasPOMes()
                            {
                                Mes                      = Convert.ToByte(Mes),
                                CodProducto              = CodVenta,
                                CodTipoFinanciacion      = 2,
                                Aprobada                 = false,
                                CodContacto              = usuario.IdContacto,
                                Observaciones            = txt_observaciones.Text.Trim(),
                                ObservacionesInterventor = string.Empty,
                                Valor                    = decimal.Parse((!string.IsNullOrEmpty(txt_sueldo_obtenido.Text)) ? txt_sueldo_obtenido.Text : "0")
                            };

                            consultas.Db.AvanceVentasPOMes.InsertOnSubmit(avanceMes);
                        }

                        consultas.Db.SubmitChanges();

                        //Consultar Id Interventor para agendar tarea
                        var datos = (from ei in consultas.Db.EmpresaInterventors
                                     join ee in consultas.Db.Empresas on ei.CodEmpresa equals ee.id_empresa
                                     join p in consultas.Db.Proyecto on ee.codproyecto equals p.Id_Proyecto
                                     where ee.codproyecto == codProyecto && ei.Inactivo == false
                                     select new datosAgendar
                        {
                            idContacto = (int)ei.CodContacto,
                            idProyecto = (int)p.Id_Proyecto,
                            nombre = p.NomProyecto
                        }).ToList();

                        decimal _Ingreso = decimal.Parse((!string.IsNullOrEmpty(txt_prestaciones_obtenidas.Text)) ? txt_prestaciones_obtenidas.Text.Replace(".", ",") : "0");

                        var hisAvance = avancesActividadTipo1.Where(x => x.CodTipoFinanciacion == 1).FirstOrDefault();

                        //Insertar Historico
                        insertarHistorico(hisAvance, _Ingreso, codProyecto);


                        var asunto = "Revisar Actividad de ventas. Se ha modificado una actividad.";
                        TareaAgendar(CodVenta, codProyecto, usuario.IdContacto, datos[0].idContacto, datos[0].nombre, NombreVenta,
                                     asunto, txt_observaciones.Text.Trim());

                        Session["CodVenta"] = null;
                        Session["Accion"]   = null;
                        Session["MesVenta"] = null;

                        ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "Mensaje", "alert('Información de ventas procesada correctamente.'); window.close();", true);
                    }
                    else
                    {
                        ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "Mensaje", "alert('" + mensaje + "');", true);
                    }
                }
                else
                {
                    mensaje = Validar(B_Acion.Text);
                    if (string.IsNullOrEmpty(mensaje))
                    {
                        var avancesVentas = (from aa in consultas.Db.AvanceVentasPOMes
                                             where aa.CodProducto == CodVenta && aa.Mes == Mes
                                             select aa).ToList();

                        foreach (var avance in avancesVentas)
                        {
                            avance.FechaAprobacion          = DateTime.Now;
                            avance.ObservacionesInterventor = txt_observ_interventor.Text.Trim();
                            avance.Aprobada = (dd_aprobado.SelectedValue == "0") ? false : true;
                        }
                        consultas.Db.SubmitChanges();

                        //consulta Id del emprendedor para agendar tarea
                        var datos = (from pc in consultas.Db.ProyectoContactos
                                     join p in consultas.Db.Proyecto on pc.CodProyecto equals p.Id_Proyecto
                                     where pc.CodProyecto == codProyecto && pc.CodRol == 3
                                     select new datosAgendar
                        {
                            idContacto = pc.CodContacto,
                            idProyecto = p.Id_Proyecto,
                            nombre = p.NomProyecto
                        }).ToList();

                        decimal _Ingreso = decimal.Parse((!string.IsNullOrEmpty(txt_prestaciones_obtenidas.Text)) ? txt_prestaciones_obtenidas.Text.Replace(".", ",") : "0");

                        var hisAvance = avancesVentas.Where(x => x.CodTipoFinanciacion == 1).FirstOrDefault();

                        //Insertar Historico
                        insertarHistorico(hisAvance, _Ingreso, codProyecto);

                        var asunto = "Revisar Actividad de ventas. Se ha modificado una actividad.";
                        TareaAgendar(CodVenta, codProyecto, usuario.IdContacto, datos[0].idContacto, datos[0].nombre, NombreVenta,
                                     asunto, txt_observaciones.Text.Trim());

                        Session["CodVenta"] = null;
                        Session["Accion"]   = null;
                        Session["MesVenta"] = null;
                        ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "Mensaje", "alert('Información de venta procesada correctamente.'); window.close();", true);
                    }
                    else
                    {
                        ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "Mensaje", "alert('" + mensaje + "');", true);
                    }
                }
                break;
            }
        }