public ActionResult ComprasPorProveedor(ReporteComprasPorProveedorFiltrosModel filtros)
 {
     return PartialOrView(filtros);
 }
        public ActionResult GenerarComprasPorProveedor(ReporteComprasPorProveedorFiltrosModel model)
        {
            DateTime? hasta = model.Hasta == null
                                    ? (DateTime?)null
                                    : model.Hasta.GetValueOrDefault().AddDays(1);

            var proveedoresDataSource = Uow.Reportes.ComprasPorProveedor(model.Desde, hasta, model.ProveedorId, UsuarioActual.CuentaId);
            var top5DataSource = Uow.Reportes.ComprasPorProveedor(model.Desde, hasta, null, UsuarioActual.CuentaId)
                                            .OrderByDescending(p => p.DescuentoTotal).Take(5).ToList();

            var reporteFactory = new ReporteFactory();

            var datasources = new Dictionary<string, object>
                                  {
                                      {"ComprasPorProveedorDataSet", proveedoresDataSource},
                                      {"Top5", top5DataSource }
                                  };

            var proveedor = Uow.Proveedores.Obtener(m => m.ProveedorId == model.ProveedorId);
            var proveedorNombre = proveedor != null ? proveedor.Nombre : TodosText;

            reporteFactory
                .SetParametro("Desde", model.Desde.ToShortDateString(null))
                .SetParametro("Hasta", model.Hasta.ToShortDateString(null))
                .SetParametro("ProveedorNombre", proveedorNombre)
                .SetParametro("ProveedorId", model.ProveedorId.GetValueOrDefault().ToString())
                .SetParametro("CuentaId", UsuarioActual.CuentaId.ToString())
                .SetPathCompleto(Server.MapPath("~/Reportes/ComprasPorProveedor.rdl"))
                .SetDataSource(datasources);

            byte[] archivo = reporteFactory.Renderizar(model.ReporteTipo);

            return File(archivo, reporteFactory.MimeType);
        }