public ActionResult ReporteGeneral(int?ciudadId, int?facilityId,
                                           int?planProgramaticoId, int?cuentaContableId, int?contraparteId, int?codigoAuditoriaId, int?accionNacionalId, int?territorioId,
                                           string descripcion, string notasAdicionales)
        {
            var listaPlanProgramatico = planProgramaticoManager.GetAllPlan();

            if (facilityId != null)
            {
                listaPlanProgramatico = planProgramaticoManager.GetPlanByFacility(facilityId.Value);
            }

            // Parámetros
            ViewBag.CiudadId   = new SelectList(ciudadesManager.GetAllCiudades(), "Id", "Nombre");
            ViewBag.FacilityId = ciudadId != null ?
                                 new SelectList(facilitiesManager.GetFacilitiesPorCiudad(ciudadId.Value), "Id", "NombreDespliegue") :
                                 new SelectList(facilitiesManager.GetAllFacilities(), "Id", "NombreDespliegue");

            ViewBag.PlanProgramaticoId = new SelectList(listaPlanProgramatico, "Id", "NombreLista", new object(), planProgramaticoManager.GetParentsPlanIds());
            ViewBag.CuentaContableId   = new SelectList(cuentasContablesManager.GetAllCuentasContables(), "Id", "NombreDespliegue");
            ViewBag.ContraparteId      = new SelectList(new ContrapartesManager().GetAllContrapartes(), "Id", "NombreDespliegue");
            ViewBag.CodigoAuditoriaId  = new SelectList(new CodigosAuditoriasManager().GetAllCodigosAuditoria(), "Id", "Descripcion");
            ViewBag.AccionNacionalId   = new SelectList(new AccionesNacionalesManager().GetAllAccionesNacionales(), "Id", "NombreDespliegue");
            ViewBag.TerritorioId       = new SelectList(new TerritoriosManager().GetAllTerritorios(), "Id", "NombreDespliegue");

            var presupuestoActual = presupuestosManager.GetPresupuestoActual();

            ViewBag.CiudadOrigenId = ciudadId;

            var reporte = reportesManager.GetReportePresupuestoGeneral(presupuestoActual.Id, ciudadId, facilityId);

            //Filtros
            reporte = FiltrarReporteGeneral(reporte, planProgramaticoId, cuentaContableId, contraparteId, codigoAuditoriaId, accionNacionalId, territorioId, descripcion, notasAdicionales);

            ViewBag.TotalReporte = reporte.Sum(r => r.Monto);
            return(View(reporte));
        }