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 AbrirGastos(string Id)
        {
            var                model      = new NuevoEjercicioModel();
            DateTime           _fecha     = _unitOfWork.getDateTimeFromServer();
            int                _versionID = Convert.ToInt32(Id);
            VersionPresupuesto _version   = _unitOfWork.GetRepositoryInstance <VersionPresupuesto>().GetFirstOrDefault(_versionID);

            model.Ejercicio     = _version.Ejercicio;
            model.Consecutivo   = _version.Consecutivo;
            model.VersionId     = _version.VersionPresupuestoId;
            model.Observaciones = _version.Observaciones;

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

            return(View(model));
        }
        public ActionResult CerrarFertilizantes(string Id)
        {
            var                model      = new NuevoEjercicioModel();
            DateTime           _fecha     = _unitOfWork.getDateTimeFromServer();
            int                _versionID = Convert.ToInt32(Id);
            VersionPresupuesto _version   = _unitOfWork.GetRepositoryInstance <VersionPresupuesto>().GetFirstOrDefault(_versionID);

            model.Ejercicio     = _version.Ejercicio;
            model.Consecutivo   = _version.Consecutivo;
            model.VersionId     = _version.VersionPresupuestoId;
            model.Observaciones = _version.Observaciones;

            int tp = Convert.ToInt32(enumTipoDePresupuesto.FERTILIZANTES);


            //ViewData["Empresas"] = FTPresupuestoProvider.GetAllEmpresasWithTODAS();
            return(View(model));
        }
Esempio n. 4
0
        public ActionResult Semillas()
        {
            var                model      = new NuevoEjercicioModel();
            DateTime           _fecha     = _unitOfWork.getDateTimeFromServer();
            int                _versionID = FTPresupuestoProvider.getVersionPresupuestoIdByTipo(enumTipoDePresupuesto.SEMILLAS);
            VersionPresupuesto _version   = _unitOfWork.GetRepositoryInstance <VersionPresupuesto>().GetFirstOrDefault(_versionID);

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

            //ViewData["Empresas"] = FTPresupuestoProvider.GetAllEmpresasWithTODAS();
            return(View(model));
        }
        public JsonResult GenerarNuevoEjercicioGastos(NuevoEjercicioModel model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    int versionActualID = FTPresupuestoProvider.getVersionPresupuestoIdByTipo(enumTipoDePresupuesto.GASTOS);
                    int versionPptoID   = model.VersionId;

                    // SE VALIDA QUE NO SE HAYA EJECUTADO DOS VECES EL MISMO PROCESO
                    if (versionPptoID > 0)
                    {
                        if (versionActualID != versionPptoID)
                        {
                            return(Json("Proceso Duplicado"));
                        }
                    }
                    // SE INICIALIZA LA CONEXION Y CONTEXTO DE BASE DE DATOS
                    using (FTPresupuestoEntities _db = new FTPresupuestoEntities())
                    {
                        // SE VALIDA EN CASO DE SER LA PRIMERA VERSION DEL EJERCICIO O QUE NO EXISTA UNA VERSION ANTERIOR EN EL EJERCICIO
                        if (model.VersionId == 0)
                        {
                            VersionPresupuesto versionPpto = new VersionPresupuesto
                            {
                                Consecutivo     = model.Consecutivo,
                                Ejercicio       = model.Ejercicio,
                                FechaCreacion   = _unitOfWork.getDateOnlyFromServer(),
                                Observaciones   = model.Observaciones,
                                TipoPresupuesto = (int)enumTipoDePresupuesto.GASTOS,
                                UsuarioCreacion = User.Identity.Name
                            };
                            versionPpto = _db.VersionPresupuesto.Add(versionPpto);
                            _db.SaveChanges();
                            versionPptoID = versionPpto.VersionPresupuestoId;
                        }

                        // CONFIGURAMOS PARA QUE EL TIEMMPO DE RESPUESTA SEA INDEFINIDO
                        _db.Database.CommandTimeout = 0;

                        // SE GENERA LA NUEVA VERSION. INTERNAMENTE EL SP VALIDA SI DEBE COPIAR O NO

                        _db.GenVersion_Ppto_Gastos(model.VersionId, true, model.Observaciones, User.Identity.Name, model.Ejercicio, model.Consecutivo);

                        //_db.GeneraNuevaVersionGastosPresupuesto(model.VersionId, true, model.Observaciones, User.Identity.Name, model.Ejercicio, model.Consecutivo);
                        //_db.SaveChanges();

                        // VALIDAMOS LA VERSION DE PRESUPUESTO A PROCESAR, DEBE SER LA ULTIMA
                        int versionProcesarID = FTPresupuestoProvider.getVersionPresupuestoIdByTipo(enumTipoDePresupuesto.GASTOS);

                        // SE EJECUTA LA CARGA DE PRESUPUESTO BASE
                        _db.temp_ppto_gastos_G(model.EmpresaId, model.Ejercicio, versionProcesarID);
                    }
                    return(Json("El Proceso finalizo de manera correcta"));
                }
                catch (Exception ex)
                {
                    return(Json(ex.InnerException.Message));
                }
                //FTPresupuestoProvider.CrearNuevoEjercicioGastos(model, User.Identity.Name);
                //FTPresupuestoProvider.CrearNuevoEjercicioGastosLocalmente(model, User.Identity.Name);
                //return RedirectToAction("Gastos", "Versiones");
            }
            return(Json("La Informacion esta Incompleta para procesar el nuevo ejercicio"));
        }
        public ActionResult AgregarCentroCostoGastos()
        {
            var                model      = new PresupuestoCentroCostoViewModel();
            DateTime           _fecha     = _unitOfWork.getDateTimeFromServer();
            int                _versionID = FTPresupuestoProvider.getVersionPresupuestoIdByTipo(enumTipoDePresupuesto.GASTOS);
            VersionPresupuesto _version   = _unitOfWork.GetRepositoryInstance <VersionPresupuesto>().GetFirstOrDefault(_versionID);

            //VerPpto _version = FTPresupuestoProvider.getVersionPresupuestoByTipo(enumTipoDePresupuesto.Gastos);

            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.GetAllEmpresas();
            return(View(model));
        }
        public JsonResult AgregarCentroDeCostoGastos(PresupuestoCentroCostoViewModel model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    int versionActualID = FTPresupuestoProvider.getVersionPresupuestoIdByTipo(enumTipoDePresupuesto.GASTOS);
                    int versionPptoID   = model.VersionId;

                    // SE VALIDA QUE NO SE HAYA EJECUTADO DOS VECES EL MISMO PROCESO
                    if (versionPptoID > 0)
                    {
                        if (versionActualID != versionPptoID)
                        {
                            return(Json("Proceso Duplicado ó ya se generó una nueva versión"));
                        }
                    }
                    if (!_unitOfWork.GetRepositoryInstance <Pre_GastosBase>()
                        .GetExists(p => p.Clave_Empresa == model.EmpresaBaseID && p.Clave_CCostos == model.CentroCostoBaseID && p.VersionPresupuestoId == model.VersionId))
                    {
                        return(Json("No existen datos del centro de costo origen para agregar el nuevo Centro de Costo"));
                    }
                    if (_unitOfWork.GetRepositoryInstance <Pre_GastosBase>()
                        .GetExists(p => p.Clave_Empresa == model.EmpresaID && p.Clave_CCostos == model.CentroCostoID && p.VersionPresupuestoId == model.VersionId))
                    {
                        return(Json("El Centro de Costo que se desea agregar ya existe en el presupuesto actual"));
                    }



                    // SE INICIALIZA LA CONEXION Y CONTEXTO DE BASE DE DATOS
                    using (FTPresupuestoEntities _db = new FTPresupuestoEntities())
                    {
                        // SE VALIDA EN CASO DE SER LA PRIMERA VERSION DEL EJERCICIO O QUE NO EXISTA UNA VERSION ANTERIOR EN EL EJERCICIO
                        if (model.VersionId == 0)
                        {
                            VersionPresupuesto versionPpto = new VersionPresupuesto
                            {
                                Consecutivo     = model.Consecutivo,
                                Ejercicio       = model.Ejercicio,
                                FechaCreacion   = _unitOfWork.getDateOnlyFromServer(),
                                Observaciones   = model.Observaciones,
                                TipoPresupuesto = (int)enumTipoDePresupuesto.GASTOS,
                                UsuarioCreacion = User.Identity.Name
                            };
                            versionPpto = _db.VersionPresupuesto.Add(versionPpto);
                            _db.SaveChanges();
                            versionPptoID = versionPpto.VersionPresupuestoId;
                        }

                        // CONFIGURAMOS PARA QUE EL TIEMMPO DE RESPUESTA SEA INDEFINIDO
                        _db.Database.CommandTimeout = 0;

                        // SE GENERA LA NUEVA VERSION. INTERNAMENTE EL SP VALIDA SI DEBE COPIAR O NO
                        _db.GenVersion_Ppto_Gastos(model.VersionId, true, model.Observaciones, User.Identity.Name, model.Ejercicio, model.Consecutivo);
                        //_db.SaveChanges();

                        // VALIDAMOS LA VERSION DE PRESUPUESTO A PROCESAR, DEBE SER LA ULTIMA
                        int versionProcesarID = FTPresupuestoProvider.getVersionPresupuestoIdByTipo(enumTipoDePresupuesto.GASTOS);

                        // SE EJECUTA AGREGAR LA SUCURSAL DESDE LA SUCURSAL BASE
                        _db.AgregaCentroCosto_Ppto_Gastos_PS(model.EmpresaBaseID, model.CentroCostoBaseID, versionProcesarID, model.Ejercicio, model.EmpresaID, model.CentroCostoID);
                    }

                    return(Json("El Proceso finalizo de manera correcta"));
                }
                catch (Exception ex)
                {
                    if (ex.InnerException != null)
                    {
                        return(Json(ex.InnerException.Message));
                    }
                    else
                    {
                        return(Json(ex.Message));
                    }
                }
            }
            return(Json("Informacion Incompleta"));
        }
Esempio n. 8
0
        public async Task <Tuple <bool, string[]> > ActualizarBaseAsync(NuevaBaseEjercicioModel model, string[] selectedItems, string userName)
        {
            bool          todoCorrecto = false;
            List <string> errores      = new List <string>();

            try
            {
                //var userName = System.Web.HttpContext.Current.User.Identity.Name;
                FTPresupuestoEntities _contextDB = _dbContextCreator() as FTPresupuestoEntities;
                _contextDB.Database.CommandTimeout = 0;
                //_contextDB.Database.BeginTransaction();
                // SE CREA LA TABLA TEMPORAL Y SE ACUMULAN
                var resultaCrear = await ValidaExistenciaTemporalAsync();

                if (!resultaCrear.Item1)
                {
                    throw new Exception(string.Join(Environment.NewLine, resultaCrear.Item2));
                }
                string idTemporal = Guid.NewGuid().ToString();
                foreach (string selected in selectedItems)
                {
                    short pEjercicio = 0;
                    short.TryParse(selected.Substring(0, 4), out pEjercicio);
                    short pMes = 0;
                    short.TryParse(selected.Substring(4, 2), out pMes);
                    short pEmpresa = 0;
                    short.TryParse(selected.Substring(6, 2), out pEmpresa);
                    var resultaTmp = AgregarEnTemporal((short)model.Ejercicio, pEjercicio, pEmpresa, pMes, idTemporal);
                    if (!resultaTmp.Item1)
                    {
                        throw new Exception(string.Join(Environment.NewLine, resultaTmp.Item2));
                    }
                }
                // SE CREA NUEVA VERSION DE PRESUPUESTO
                int versionPptoID = model.VersionId;
                if (model.VersionId == 0)
                {
                    VersionPresupuesto versionPpto = new VersionPresupuesto
                    {
                        Consecutivo     = model.Consecutivo,
                        Ejercicio       = model.Ejercicio,
                        FechaCreacion   = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day),
                        Observaciones   = model.Observaciones,
                        TipoPresupuesto = (int)enumTipoDePresupuesto.SEMILLAS,
                        UsuarioCreacion = userName,
                        EstaCerrado     = false
                    };
                    IVersionPresupuestoRepository verPptpRepo = new VersionPresupuestoRepository(_dbContextCreator);
                    var result = verPptpRepo.Create(versionPpto);
                    if (!result.Item1)
                    {
                        throw new Exception(string.Join(Environment.NewLine, result.Item2));
                    }
                    versionPptoID = versionPpto.VersionPresupuestoId;
                }
                // PROCESO PARA COPIAR VERSION DE PRESUPUESTO A NUEVA VERSION
                _contextDB.GenVersion_Ppto_Semillas(model.VersionId, true, model.Observaciones, userName, model.Ejercicio, model.Consecutivo);
                //var resultNuevaVersion = GenerarVersion(model.VersionId, true, model.Observaciones, model.Ejercicio, model.Consecutivo, userName);
                //if (!resultNuevaVersion.Item1)
                //{
                //    throw new Exception(string.Join(Environment.NewLine, resultNuevaVersion.Item2));
                //}

                int versionProcesarID = FTPresupuestoProvider.getVersionPresupuestoIdByTipo(enumTipoDePresupuesto.SEMILLAS);

                _contextDB.ActualizarBase_Ppto_Semillas(0, model.EmpresaId, model.Ejercicio, versionProcesarID, idTemporal);
                todoCorrecto = true;
            }
            catch (DbEntityValidationException e)
            {
                foreach (var eve in e.EntityValidationErrors)
                {
                    errores.Add(string.Format("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:"
                                              , eve.Entry.Entity.GetType().Name, eve.Entry.State));
                    foreach (var ve in eve.ValidationErrors)
                    {
                        errores.Add(string.Format("- Property: \"{0}\", Value: \"{1}\", Error: \"{2}\""
                                                  , ve.PropertyName, eve.Entry.CurrentValues.GetValue <object>(ve.PropertyName), ve.ErrorMessage));
                    }
                }
            }
            catch (Exception ex)
            {
                errores.Add(ex.Message);
                Exception _ex = ex.InnerException;
                while (_ex != null)
                {
                    errores.Add(_ex.Message);
                    _ex = _ex.InnerException;
                }
            }
            return(Tuple.Create(todoCorrecto, errores.ToArray()));
        }
        public ActionResult NuevoEjercicioFertilizantes()
        {
            var                model      = new NuevoEjercicioModel();
            DateTime           _fecha     = _unitOfWork.getDateTimeFromServer();
            int                _versionID = FTPresupuestoProvider.getVersionPresupuestoIdByTipo(enumTipoDePresupuesto.FERTILIZANTES);
            VersionPresupuesto _version   = _unitOfWork.GetRepositoryInstance <VersionPresupuesto>().GetFirstOrDefault(_versionID);

            if (_version == null)
            {
                _version                 = new VersionPresupuesto();
                _version.Consecutivo     = 1;
                _version.Ejercicio       = _fecha.Year;
                _version.TipoPresupuesto = (int)enumTipoDePresupuesto.FERTILIZANTES;
                _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.FERTILIZANTES);
            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));
        }