public async Task <ActionResult> NuevaBaseEjercicioGastos()
        {
            IRepositoryWrapper _repo = new RepositoryWrapper();

            var model = new NuevaBaseEjercicioModel();

            model.SelectedEmpresaMes = "";
            DateTime           _fecha     = _unitOfWork.getDateTimeFromServer();
            int                _versionID = FTPresupuestoProvider.getVersionPresupuestoIdByTipo(enumTipoDePresupuesto.GASTOS);
            VersionPresupuesto _version   = _unitOfWork.GetRepositoryInstance <VersionPresupuesto>().GetFirstOrDefault(_versionID);

            if (_version == null)
            {
                _version                 = new VersionPresupuesto();
                _version.Consecutivo     = 1;
                _version.Ejercicio       = _fecha.Year;
                _version.TipoPresupuesto = (int)enumTipoDePresupuesto.GASTOS;
                _version.UsuarioCreacion = User.Identity.Name;
                _version.FechaCreacion   = _fecha;
            }
            model.Ejercicio     = _version.Ejercicio;
            model.Consecutivo   = _version.Consecutivo;
            model.VersionId     = _version.VersionPresupuestoId;
            model.Observaciones = _version.Observaciones;

            int anioActual = _fecha.Year;
            int mesActual  = _fecha.Month;


            int tp             = Convert.ToInt32(enumTipoDePresupuesto.GASTOS);
            int maxConsecutivo = 0;

            using (FTPresupuestoEntities _db = new FTPresupuestoEntities())
            {
                maxConsecutivo = _db.VersionPresupuesto
                                 .Where(v => v.TipoPresupuesto == tp && v.Ejercicio == model.Ejercicio)
                                 .Select(v => v.Consecutivo)
                                 .DefaultIfEmpty(0)
                                 .Max();
            }
            model.Consecutivo = maxConsecutivo + 1;

            ViewData["Empresas"] = FTPresupuestoProvider.GetAllEmpresasWithTODAS();
            var listaEmpresasMeses = await _repo.Gastos.getEmpresasMesesAsync();

            ViewData["EmpresasMeses"] = listaEmpresasMeses
                                        .OrderBy(x => x.Clave_Empresa).ThenByDescending(x => x.Ejercicio).ThenByDescending(x => x.Mes)
                                        .ToList();
            return(View(model));
        }
        public ActionResult NuevoEjercicioGastos()
        {
            var                model      = new NuevoEjercicioModel();
            DateTime           _fecha     = _unitOfWork.getDateTimeFromServer();
            int                _versionID = FTPresupuestoProvider.getVersionPresupuestoIdByTipo(enumTipoDePresupuesto.GASTOS);
            VersionPresupuesto _version   = _unitOfWork.GetRepositoryInstance <VersionPresupuesto>().GetFirstOrDefault(_versionID);

            //VerPpto _version = FTPresupuestoProvider.getVersionPresupuestoByTipo(enumTipoDePresupuesto.Gastos);
            if (_version == null)
            {
                _version                 = new VersionPresupuesto();
                _version.Consecutivo     = 1;
                _version.Ejercicio       = _fecha.Year;
                _version.TipoPresupuesto = (int)enumTipoDePresupuesto.GASTOS;
                _version.UsuarioCreacion = User.Identity.Name;
                _version.FechaCreacion   = _fecha;
            }
            model.Ejercicio     = _version.Ejercicio;
            model.Consecutivo   = _version.Consecutivo;
            model.VersionId     = _version.VersionPresupuestoId;
            model.Observaciones = _version.Observaciones;

            int anioActual = _fecha.Year;
            int mesActual  = _fecha.Month;

            if (mesActual > 9)
            {
                if (anioActual >= _version.Ejercicio)
                {
                    model.Ejercicio     = anioActual + 1;
                    model.Consecutivo   = 1;
                    model.VersionId     = 0;
                    model.Observaciones = string.Empty;
                }
            }
            else
            {
                model.Ejercicio = anioActual;
                //model.Consecutivo = 1;
                //model.VersionId = 0;
                model.Observaciones = string.Empty;
            }

            if (anioActual == _version.Ejercicio)
            {
                if (mesActual > 9)
                {
                    model.Ejercicio     = anioActual + 1;
                    model.Consecutivo   = 1;
                    model.VersionId     = 0;
                    model.Observaciones = string.Empty;
                }
                else
                {
                    model.Ejercicio = anioActual;
                    //model.Consecutivo = 1;
                    //model.VersionId = 0;
                    model.Observaciones = string.Empty;
                }
            }



            //if (anioActual == _version.Ejercicio && mesActual > 9)
            //{
            //    model.Ejercicio = anioActual + 1;
            //    model.Consecutivo = 1;
            //    model.VersionId = 0;
            //    model.Observaciones = string.Empty;
            //}
            //if (anioActual > _version.Ejercicio && mesActual <= 9)
            //{
            //    model.Ejercicio = anioActual;
            //    model.Consecutivo = 1;
            //    model.VersionId = 0;
            //    model.Observaciones = string.Empty;
            //}

            int tp             = Convert.ToInt32(enumTipoDePresupuesto.GASTOS);
            int maxConsecutivo = 0;

            using (FTPresupuestoEntities _db = new FTPresupuestoEntities())
            {
                maxConsecutivo = _db.VersionPresupuesto
                                 .Where(v => v.TipoPresupuesto == tp && v.Ejercicio == model.Ejercicio)
                                 .Select(v => v.Consecutivo)
                                 .DefaultIfEmpty(0)
                                 .Max();
            }
            model.Consecutivo = maxConsecutivo + 1;

            ViewData["Empresas"] = FTPresupuestoProvider.GetAllEmpresasWithTODAS();
            return(View(model));
        }