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); } }
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); } }
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); } }
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); } }
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); } }