public ActionResult GenerarRep_FacturacionPorHonorarios(DateTime? FechaInicio, DateTime? FechaFin) { if (FechaInicio == null || FechaFin == null) { return RedirectToAction("ReportesGestion", new { message = 1 }); } EmpresaDTO objEmpresa = (new EmpresaBL()).getEmpresa(getCurrentUser().IdEmpresa); ReportesBL repBL = new ReportesBL(); List<HonorarioDTO> lstHonorariosMontos = repBL.getHonorariosEnEmpresa(objEmpresa.IdEmpresa, FechaInicio, FechaFin); if (lstHonorariosMontos == null) return RedirectToAction("ReportesGestion", new { message = 2 }); System.Data.DataTable dt = new System.Data.DataTable(); dt.Clear(); dt.Columns.Add("Modalidad"); dt.Columns.Add("Monto con IGV"); dt.Columns.Add("Monto sin IGV"); dt.Columns.Add("Porcentaje"); Decimal SumaTotal = lstHonorariosMontos.Sum(x => x.Monto); foreach (var obj in lstHonorariosMontos) { DataRow row = dt.NewRow(); row["Modalidad"] = obj.Nombre; row["Monto con IGV"] = obj.Monto.ToString("N2", CultureInfo.InvariantCulture); row["Monto sin IGV"] = obj.Monto_SinIGV.ToString("N2", CultureInfo.InvariantCulture); Decimal porcentaje = SumaTotal == 0 ? 0 : obj.Monto / SumaTotal; obj.Porcentaje = porcentaje; row["Porcentaje"] = porcentaje.ToString("P2", CultureInfo.InvariantCulture); dt.Rows.Add(row); } System.Data.DataRow rowFinal = dt.NewRow(); rowFinal[0] = "TOTAL"; rowFinal[1] = SumaTotal.ToString("N2", CultureInfo.InvariantCulture); rowFinal[2] = lstHonorariosMontos.Sum(x => x.Porcentaje).ToString("P2", CultureInfo.InvariantCulture); dt.Rows.Add(rowFinal); GenerarPdf(dt, "Ventas por Modalidad de Pago", "VentasPorModalidadDePago", objEmpresa, FechaInicio, FechaFin, Response); return RedirectToAction("ReportesGestion", new { message = 2 }); }