/// <summary>
 /// Page_Load.
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 protected void Page_Load(object sender, EventArgs e)
 {
     sTab                = HttpContext.Current.Session["sTab"] != null ? sTab = HttpContext.Current.Session["sTab"].ToString() : "";
     sCodProyecto        = HttpContext.Current.Session["CodProyecto"] != null ? sCodProyecto = HttpContext.Current.Session["CodProyecto"].ToString() : "";
     sCodConvocatoria    = HttpContext.Current.Session["CodConvocatoria"] != null ? sCodConvocatoria = HttpContext.Current.Session["CodConvocatoria"].ToString() : "";
     CodGrupo_RolUsuario = HttpContext.Current.Session["RolUsuario"] != null ? CodGrupo_RolUsuario = HttpContext.Current.Session["RolUsuario"].ToString() : "";
     Id_User             = HttpContext.Current.Session["IdUsuario"] != null ? CodGrupo_RolUsuario = HttpContext.Current.Session["IdUsuario"].ToString() : "";
     ObtenerUltimaActualizacion(sTab, sCodProyecto, sCodConvocatoria, CodGrupo_RolUsuario, Id_User);
     basePage = new Base_Page();
 }
        /// <summary>
        /// Cargar los datos de ingreso de ventas del plan de negocio
        /// </summary>
        private void CargarIngresosVentas()
        {
            String    txtSQL;
            DataTable rsProducto = new DataTable();
            DataTable datos      = new DataTable();
            Consultas consultas  = new Consultas();
            Base_Page obj        = new Base_Page();

            double[] totalPt      = new double[txtTiempoProyeccion + 1];
            double[] totalIvaPt   = new double[txtTiempoProyeccion + 1];
            int[]    ivas         = new int[txtTiempoProyeccion];
            string   errorMessage = string.Empty;

            txtSQL = " select id_producto, nomproducto, porcentajeiva " +
                     " from proyectoproducto " +
                     " where codproyecto = " + CodigoProyecto;

            rsProducto = consultas.ObtenerDataTable(txtSQL, "text");

            datos.Columns.Add("Producto");

            //Dependiendo del tiempo de proyección
            for (int i = 1; i <= txtTiempoProyeccion; i++)
            {
                datos.Columns.Add("Año " + i);
            }

            foreach (DataRow row in rsProducto.Rows)
            {
                DataRow dr = datos.NewRow();
                dr["producto"] = row["nomproducto"].ToString();

                txtSQL = " select sum(unidades) as unidades, precio, sum(unidades)*precio as total, ano " +
                         " from proyectoproductounidadesventas u, proyectoproductoprecio p " +
                         " where p.codproducto=u.codproducto and periodo=ano and p.codproducto = " + row["id_Producto"].ToString() +
                         " group by ano,precio order by ano";

                var rsUnidades = consultas.ObtenerDataTable(txtSQL, "text");

                int incr = 1;
                foreach (DataRow row_unidades in rsUnidades.Rows)
                {
                    try
                    {
                        double unidades = Double.Parse(row_unidades["Unidades"].ToString());
                        double precio   = Double.Parse(row_unidades["Precio"].ToString());
                        double total2   = double.Parse(row_unidades["total"].ToString());
                        if (incr == 0)
                        {
                            dr["Producto"] = (unidades * precio);
                        }
                        else
                        {
                            //dr["Año " + incr.ToString()] = (unidades * precio).ToString("0,0.00", CultureInfo.CreateSpecificCulture("es-CO"));
                            //dr["Año " + incr.ToString()] = (unidades * precio).ToString("0,0.00", CultureInfo.InvariantCulture);
                            dr["Año " + incr.ToString()] = total2.ToString("$ 0,0.00", CultureInfo.InvariantCulture);
                        }

                        double total         = Double.Parse(row_unidades["total"].ToString());
                        double anio          = Double.Parse(row_unidades["ano"].ToString());
                        double porcentajeIva = Double.Parse(row["porcentajeiva"].ToString());
                        totalPt[incr] += total;

                        totalIvaPt[incr] += (total * porcentajeIva / 100);

                        incr++;
                    }
                    catch (Exception ex) { errorMessage = ex.Message; }
                }

                datos.Rows.Add(dr);
            }

            DataRow drTotal       = datos.NewRow();
            DataRow drTotalIva    = datos.NewRow();
            DataRow drTotalMasIva = datos.NewRow();

            drTotal["Producto"]       = "Total";
            drTotalIva["Producto"]    = "Iva";
            drTotalMasIva["Producto"] = "Total con Iva";

            for (int i = 0; i <= txtTiempoProyeccion + 1; i++)
            {
                if (i != 0)
                {
                    if (i <= txtTiempoProyeccion)
                    {
                        //drTotal["Año " + i] = (totalPt[i] ).ToString("0,0.00", CultureInfo.CreateSpecificCulture("es-CO"));
                        //drTotalIva["Año " + i] = (totalIvaPt[i] ).ToString("N2", CultureInfo.CreateSpecificCulture("es-CO"));
                        //drTotalMasIva["Año " + i] = ((totalPt[i] + totalIvaPt[i]) ).ToString("0,0.00", CultureInfo.CreateSpecificCulture("es-CO"));
                        drTotal["Año " + i]       = (totalPt[i]).ToString("$ 0,0.00", CultureInfo.InvariantCulture);
                        drTotalIva["Año " + i]    = (totalIvaPt[i]).ToString("$ 0,0.00", CultureInfo.InvariantCulture);
                        drTotalMasIva["Año " + i] = ((totalPt[i] + totalIvaPt[i])).ToString("$ 0,0.00", CultureInfo.InvariantCulture);
                    }
                }
            }

            datos.Rows.Add(drTotal);
            datos.Rows.Add(drTotalIva);
            datos.Rows.Add(drTotalMasIva);

            //Cargar los datos en el grid de ingreso de ventas
            gw_IngresosVentas.DataSource = datos;
            gw_IngresosVentas.DataBind();

            PintarFilasGrid(gw_IngresosVentas, 0, new string[] { "Total", "Iva", "Total con Iva" });

            for (int i = (gw_IngresosVentas.Rows.Count - 3); i < gw_IngresosVentas.Rows.Count; i++)
            {
                gw_IngresosVentas.Rows[i].Font.Bold = true;
            }
        }