コード例 #1
0
        void GenerarButton_Click(object sender, EventArgs e)
        {
            var fechaDesde = Convert.ToDateTime(FechaDesdeTextBox.Text);
            var fechaHasta = Convert.ToDateTime(FechaHastaTextBox.Text);

            var dtReporte = new DataTable();
            dtReporte.Columns.Add(new DataColumn("Recurso", typeof(string)));
            dtReporte.Columns.Add(new DataColumn("FechaDesde", typeof(string)));
            dtReporte.Columns.Add(new DataColumn("FechaHasta", typeof(string)));
            dtReporte.Columns.Add(new DataColumn("MotivoLicencia", typeof(string)));
            dtReporte.Columns.Add(new DataColumn("Dias", typeof(int)));

            var licencias = from rl in DbsrContext.RecursoLicencia
                            where (rl.FechaDesde >= fechaDesde && rl.FechaHasta <= fechaHasta)
                                || (rl.FechaDesde <= fechaDesde && rl.FechaHasta >= fechaDesde && rl.FechaHasta <= fechaHasta)
                                || (rl.FechaDesde >= fechaDesde && rl.FechaDesde <= fechaHasta && rl.FechaHasta >= fechaHasta)
                                || (rl.FechaDesde <= fechaDesde && rl.FechaHasta >= fechaHasta)
                            orderby rl.Recurso.Nombre, rl.FechaDesde, rl.FechaHasta
                            select new { Recurso = rl.Recurso.Nombre, rl.FechaDesde, rl.FechaHasta, MotivoLicencia = rl.MotivoLicencia.Descripcion };

            foreach (var l in licencias)
            {
                dtReporte.Rows.Add(l.Recurso, l.FechaDesde.ToString("dd/MM/yyyy"), l.FechaHasta.ToString("dd/MM/yyyy"), l.MotivoLicencia,
                    (l.FechaHasta - l.FechaDesde).Days + 1);
            }

            if (dtReporte.Rows.Count == 0)
            {
                MostrarPopup("No se encontraron licencias para la fecha indicada.");
            }
            else
            {
                var subtitulos = new List<string>
                {
                    "Fecha desde: " + fechaDesde.ToString("dd/MM/yyyy"),
                    "Fecha hasta: " + fechaHasta.ToString("dd/MM/yyyy"),
                    "Fecha de generación: " + DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss")
                };
                var xlsx = new ExcelExporter(dtReporte, "Reporte de licencias", subtitulos);
                string fileName = String.Format(@"Licencias_{0}.xlsx", DateTime.Now.ToString("yyyyMMddhhmmssffff"));
                xlsx.Export(fileName);
                DescargarArchivo(fileName);
            }
        }
コード例 #2
0
        void GenerarButton_Click(object sender, EventArgs e)
        {
            var fecha = Convert.ToDateTime(FechaTextBox.Text);

            var dtReporte = new DataTable();

            dtReporte.Columns.Add(new DataColumn("Recurso", typeof(string)));

            dtReporte.PrimaryKey = new DataColumn[] { dtReporte.Columns["Recurso"] };

            var recursosAsignados = new HashSet <string>(from r in DbsrContext.Recurso select r.Nombre);

            // buscar los recursos asignados para esta fecha
            var asignados = from rp in DbsrContext.RecursoProyecto
                            join p in DbsrContext.Proyecto on rp.IdProyecto equals p.IdProyecto
                            join r in DbsrContext.Recurso on rp.IdRecurso equals r.IdRecurso
                            where ((rp.FechaDesde ?? DateTime.MinValue) <= fecha) && (fecha <= (rp.FechaHasta ?? DateTime.MaxValue))
                            orderby p.Nombre, r.Nombre
                select new { Recurso = r.Nombre, Proyecto = p.Nombre, Horas = rp.Horas };

            var proyectos = new HashSet <string>();

            // armar el dataset
            foreach (var asignado in asignados)
            {
                var nombreProyecto = asignado.Proyecto;
                if (!proyectos.Contains(nombreProyecto))
                {
                    dtReporte.Columns.Add(new DataColumn(nombreProyecto, typeof(int)));
                    proyectos.Add(nombreProyecto);
                }

                DataRow row = dtReporte.Rows.Find(new object[] { asignado.Recurso });

                if (row == null)
                {
                    row            = dtReporte.NewRow();
                    row["Recurso"] = asignado.Recurso;
                    dtReporte.Rows.Add(row);
                }
                row[nombreProyecto] = asignado.Horas;
                recursosAsignados.Remove(asignado.Recurso);
            }

            // agregar recursos sin asignar
            foreach (var recurso in recursosAsignados)
            {
                var row = dtReporte.NewRow();
                row["Recurso"] = "* " + recurso;
                dtReporte.Rows.Add(row);
            }

            if (dtReporte.Rows.Count == 0)
            {
                MostrarPopup("No se encontraron datos para la fecha indicada.");
            }
            else
            {
                var subtitulos = new List <string>
                {
                    "Fecha: " + fecha.ToString("dd/MM/yyyy"),
                    "Fecha de generación: " + DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss")
                };

                var    xlsx     = new ExcelExporter(dtReporte, "Reporte de asignación de recursos", subtitulos);
                string fileName = String.Format(@"AsignacionRecursos_{0}.xlsx", DateTime.Now.ToString("yyyyMMddhhmmssffff"));
                xlsx.Export(fileName);
                DescargarArchivo(fileName);
            }
        }
コード例 #3
0
        void GenerarButton_Click(object sender, EventArgs e)
        {
            var fechaDesde = Convert.ToDateTime(FechaDesdeTextBox.Text);
            var fechaHasta = Convert.ToDateTime(FechaHastaTextBox.Text);

            var dtReporte = new DataTable();

            dtReporte.Columns.Add(new DataColumn("Recurso", typeof(string)));
            dtReporte.Columns.Add(new DataColumn("Cliente", typeof(string)));
            dtReporte.Columns.Add(new DataColumn("Proyecto", typeof(string)));
            dtReporte.Columns.Add(new DataColumn("TipoRecurso", typeof(string)));
            dtReporte.Columns.Add(new DataColumn("CuentaFacturacion", typeof(string)));
            dtReporte.Columns.Add(new DataColumn("Horas", typeof(int)));

            dtReporte.PrimaryKey = new DataColumn[] { dtReporte.Columns["Recurso"],
                                                      dtReporte.Columns["Cliente"],
                                                      dtReporte.Columns["Proyecto"] };

            var fecha = fechaDesde;

            // calcular la cantidad de días hábiles en el período
            var feriados = new HashSet <DateTime>(from f in DbsrContext.Feriado
                                                  where fechaDesde <= f.Fecha && f.Fecha <= fechaHasta
                                                  select f.Fecha);
            int diasHabiles = 0;

            while (fecha <= fechaHasta)
            {
                if (!feriados.Contains(fecha) && fecha.DayOfWeek != DayOfWeek.Saturday && fecha.DayOfWeek != DayOfWeek.Sunday)
                {
                    diasHabiles++;

                    // buscar los recursos asignados para esta fecha
                    var asignados = from rp in DbsrContext.RecursoProyecto
                                    where ((rp.FechaDesde ?? DateTime.MinValue) <= fecha) && (fecha <= (rp.FechaHasta ?? DateTime.MaxValue))
                                    select new { Recurso     = rp.Recurso.Nombre, Cliente = rp.Proyecto.Cliente.Nombre, Proyecto = rp.Proyecto.Nombre,
                                                 TipoRecurso = rp.Recurso.TipoRecurso.Descripcion, CuentaFacturacion = rp.Proyecto.CuentaFacturacion.Nombre, HorasFacturacion = rp.HorasFacturacion };

                    // acumular en el dataset
                    foreach (var asignado in asignados)
                    {
                        var     key = new object[] { asignado.Recurso, asignado.Cliente, asignado.Proyecto };
                        DataRow row = dtReporte.Rows.Find(key);
                        if (row != null)
                        {
                            row["Horas"] = Convert.ToInt32(row["Horas"]) + asignado.HorasFacturacion;
                        }
                        else
                        {
                            row                      = dtReporte.NewRow();
                            row["Recurso"]           = asignado.Recurso;
                            row["Cliente"]           = asignado.Cliente;
                            row["Proyecto"]          = asignado.Proyecto;
                            row["TipoRecurso"]       = asignado.TipoRecurso;
                            row["CuentaFacturacion"] = asignado.CuentaFacturacion;
                            row["Horas"]             = asignado.HorasFacturacion;
                            dtReporte.Rows.Add(row);
                        }
                    }
                }

                fecha = fecha.AddDays(1);
            }

            if (dtReporte.Rows.Count == 0)
            {
                MostrarPopup("No se encontraron recursos asignados a proyectos para la fecha indicada.");
            }
            else
            {
                var subtitulos = new List <string>
                {
                    "Fecha desde: " + fechaDesde.ToString("dd/MM/yyyy"),
                    "Fecha hasta: " + fechaHasta.ToString("dd/MM/yyyy"),
                    "Días hábiles: " + diasHabiles,
                    "Fecha de generación: " + DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss")
                };
                var    xlsx     = new ExcelExporter(dtReporte, "Reporte de horas vendidas", subtitulos);
                string fileName = String.Format(@"HorasVendidas_{0}.xlsx", DateTime.Now.ToString("yyyyMMddhhmmssffff"));
                xlsx.Export(fileName);
                DescargarArchivo(fileName);
            }
        }
コード例 #4
0
        void GenerarButton_Click(object sender, EventArgs e)
        {
            var fecha = Convert.ToDateTime(FechaTextBox.Text);

            var dtReporte = new DataTable();
            dtReporte.Columns.Add(new DataColumn("Recurso", typeof(string)));

            dtReporte.PrimaryKey = new DataColumn[] { dtReporte.Columns["Recurso"] };

            var recursosAsignados = new HashSet<string>(from r in DbsrContext.Recurso select r.Nombre);

            // buscar los recursos asignados para esta fecha
            var asignados = from rp in DbsrContext.RecursoProyecto
                            join p in DbsrContext.Proyecto on rp.IdProyecto equals p.IdProyecto
                            join r in DbsrContext.Recurso on rp.IdRecurso equals r.IdRecurso
                            where ((rp.FechaDesde ?? DateTime.MinValue) <= fecha) && (fecha <= (rp.FechaHasta ?? DateTime.MaxValue))
                            orderby p.Nombre, r.Nombre
                            select new { Recurso = r.Nombre, Proyecto = p.Nombre, Horas = rp.Horas };

            var proyectos = new HashSet<string>();

            // armar el dataset
            foreach (var asignado in asignados)
            {
                var nombreProyecto = asignado.Proyecto;
                if (!proyectos.Contains(nombreProyecto))
                {
                    dtReporte.Columns.Add(new DataColumn(nombreProyecto, typeof(int)));
                    proyectos.Add(nombreProyecto);
                }

                DataRow row = dtReporte.Rows.Find(new object[] { asignado.Recurso });

                if (row == null)
                {
                    row = dtReporte.NewRow();
                    row["Recurso"] = asignado.Recurso;
                    dtReporte.Rows.Add(row);
                }
                row[nombreProyecto] = asignado.Horas;
                recursosAsignados.Remove(asignado.Recurso);
            }

            // agregar recursos sin asignar
            foreach (var recurso in recursosAsignados)
            {
                var row = dtReporte.NewRow();
                row["Recurso"] = "* " + recurso;
                dtReporte.Rows.Add(row);
            }

            if (dtReporte.Rows.Count == 0)
            {
                MostrarPopup("No se encontraron datos para la fecha indicada.");
            }
            else
            {
                var subtitulos = new List<string>
                {
                    "Fecha: " + fecha.ToString("dd/MM/yyyy"),
                    "Fecha de generación: " + DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss")
                };

                var xlsx = new ExcelExporter(dtReporte, "Reporte de asignación de recursos", subtitulos);
                string fileName = String.Format(@"AsignacionRecursos_{0}.xlsx", DateTime.Now.ToString("yyyyMMddhhmmssffff"));
                xlsx.Export(fileName);
                DescargarArchivo(fileName);
            }
        }
コード例 #5
0
        void GenerarButton_Click(object sender, EventArgs e)
        {
            var fechaDesde = Convert.ToDateTime(FechaDesdeTextBox.Text);
            var fechaHasta = Convert.ToDateTime(FechaHastaTextBox.Text);

            var dtReporte = new DataTable();
            dtReporte.Columns.Add(new DataColumn("Recurso", typeof(string)));
            dtReporte.Columns.Add(new DataColumn("Cliente", typeof(string)));
            dtReporte.Columns.Add(new DataColumn("Proyecto", typeof(string)));
            dtReporte.Columns.Add(new DataColumn("TipoRecurso", typeof(string)));
            dtReporte.Columns.Add(new DataColumn("CuentaFacturacion", typeof(string)));
            dtReporte.Columns.Add(new DataColumn("Horas", typeof(int)));

            dtReporte.PrimaryKey = new DataColumn[] { dtReporte.Columns["Recurso"],
                dtReporte.Columns["Cliente"],
                dtReporte.Columns["Proyecto"]
            };

            var fecha = fechaDesde;

            // calcular la cantidad de días hábiles en el período
            var feriados = new HashSet<DateTime>(from f in DbsrContext.Feriado
                                                 where fechaDesde <= f.Fecha && f.Fecha <= fechaHasta
                                                 select f.Fecha);
            int diasHabiles = 0;

            while (fecha <= fechaHasta)
            {
                if (!feriados.Contains(fecha) && fecha.DayOfWeek != DayOfWeek.Saturday && fecha.DayOfWeek != DayOfWeek.Sunday)
                {
                    diasHabiles++;

                    // buscar los recursos asignados para esta fecha
                    var asignados = from rp in DbsrContext.RecursoProyecto
                                    where ((rp.FechaDesde ?? DateTime.MinValue) <= fecha) && (fecha <= (rp.FechaHasta ?? DateTime.MaxValue))
                                    select new { Recurso = rp.Recurso.Nombre, Cliente = rp.Proyecto.Cliente.Nombre, Proyecto = rp.Proyecto.Nombre,
                                        TipoRecurso = rp.Recurso.TipoRecurso.Descripcion, CuentaFacturacion = rp.Proyecto.CuentaFacturacion.Nombre, HorasFacturacion = rp.HorasFacturacion };

                    // acumular en el dataset
                    foreach (var asignado in asignados)
                    {
                        var key = new object[] { asignado.Recurso, asignado.Cliente, asignado.Proyecto };
                        DataRow row = dtReporte.Rows.Find(key);
                        if (row != null)
                        {
                            row["Horas"] = Convert.ToInt32(row["Horas"]) + asignado.HorasFacturacion;
                        }
                        else
                        {
                            row = dtReporte.NewRow();
                            row["Recurso"] = asignado.Recurso;
                            row["Cliente"] = asignado.Cliente;
                            row["Proyecto"] = asignado.Proyecto;
                            row["TipoRecurso"] = asignado.TipoRecurso;
                            row["CuentaFacturacion"] = asignado.CuentaFacturacion;
                            row["Horas"] = asignado.HorasFacturacion;
                            dtReporte.Rows.Add(row);
                        }
                    }
                }

                fecha = fecha.AddDays(1);
            }

            if (dtReporte.Rows.Count == 0)
            {
                MostrarPopup("No se encontraron recursos asignados a proyectos para la fecha indicada.");
            }
            else
            {
                var subtitulos = new List<string>
                {
                    "Fecha desde: " + fechaDesde.ToString("dd/MM/yyyy"),
                    "Fecha hasta: " + fechaHasta.ToString("dd/MM/yyyy"),
                    "Días hábiles: " + diasHabiles,
                    "Fecha de generación: " + DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss")
                };
                var xlsx = new ExcelExporter(dtReporte, "Reporte de horas vendidas", subtitulos);
                string fileName = String.Format(@"HorasVendidas_{0}.xlsx", DateTime.Now.ToString("yyyyMMddhhmmssffff"));
                xlsx.Export(fileName);
                DescargarArchivo(fileName);
            }
        }