Beispiel #1
0
        public JsonResult GenerarAcumuladoEdoRes(EjercicioMesModel model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    using (FTPresupuestoEntities _db = new FTPresupuestoEntities())
                    {
                        _db.Database.CommandTimeout = 0;

                        _db.EdoRes_GenerarMes(model.Ejercicio, model.Mes);
                        //_db.SaveChanges();
                    }
                    return(Json("Proceso Correctamente Finalizado"));
                }
                catch (Exception ex)
                {
                    if (ex.InnerException != null)
                    {
                        return(Json(ex.InnerException.Message));
                    }
                    else
                    {
                        return(Json(ex.Message));
                    }
                }
            }
            return(Json("Informacion Incompleta"));
        }
        public JsonResult AgregarNuevaVersionFertilizantes(NuevoEjercicioModel model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    using (FTPresupuestoEntities _db = new FTPresupuestoEntities())
                    {
                        _db.Database.CommandTimeout = 0;

                        _db.GenVersion_Ppto_Fertilizantes(model.VersionId, true, model.Observaciones, User.Identity.Name, model.Ejercicio, model.Consecutivo);
                        //_db.SaveChanges();
                    }
                    return(Json("El Proceso finalizo de manera correcta"));
                }
                catch (Exception ex)
                {
                    if (ex.InnerException != null)
                    {
                        return(Json(ex.InnerException.Message));
                    }
                    return(Json(ex.Message));
                }
            }
            return(Json("Informacion Incompleta"));
        }
        public JsonResult CerrarEjercicioSemillas(NuevoEjercicioModel model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    using (FTPresupuestoEntities _db = new FTPresupuestoEntities())
                    {
                        var versionActual = FTPresupuestoProvider.getVersionPresupuestoIdByTipo(enumTipoDePresupuesto.SEMILLAS);

                        var _version = _db.VersionPresupuesto.Where(x => x.VersionPresupuestoId == model.VersionId).FirstOrDefault();
                        if (_version == null)
                        {
                            throw new Exception("No se encontro la version de presupuesto seleccionada");
                        }
                        _version.Observaciones = model.Observaciones;
                        if ((_version.EstaCerrado ?? false))
                        {
                            throw new Exception("Esta version ya esta marcada como Ejercicio CERRADO");
                        }
                        _version.EstaCerrado       = true;
                        _version.UltimaFechaCierre = DateTime.Now;
                        _version.UsuarioIdCierre   = User.Identity.Name;

                        // SE GUARDA EL CAMBIO EN PREESTATUS
                        PreEstatus logEstatus = new PreEstatus();
                        logEstatus.EmpresaId            = 0;
                        logEstatus.SucursalId           = 0;
                        logEstatus.EsActual             = (versionActual == model.VersionId) ? true : false;
                        logEstatus.Estatus              = "CERRADO";
                        logEstatus.Fecha                = DateTime.Now;
                        logEstatus.TipoPresupuesto      = (int)enumTipoDePresupuesto.SEMILLAS;
                        logEstatus.UsuarioId            = User.Identity.Name;
                        logEstatus.VersionPresupuestoId = model.VersionId;

                        _db.PreEstatus.Add(logEstatus);

                        _db.SaveChanges();
                    }
                    return(Json("Presupuesto de Semillas se marcó como CERRADO de manera correcta"));
                }
                catch (Exception ex)
                {
                    if (ex.InnerException != null)
                    {
                        return(Json(ex.InnerException.Message));
                    }
                    else
                    {
                        return(Json(ex.Message));
                    }
                }
            }
            return(Json("La Informacion es Incompleta"));
        }
        public Tuple <bool, string[]> GenerarVersion(int verPptoId, bool generarNuevaVersion, string observaciones, int ejercicio, int consecutivo, string userName)
        {
            bool          todoCorrecto = false;
            List <string> errores      = new List <string>();

            try
            {
                if (!generarNuevaVersion)
                {
                    return(Tuple.Create(true, errores.ToArray()));
                }
                //var userName =  HttpContext.Current.User.Identity.Name;

                FTPresupuestoEntities _context = (FTPresupuestoEntities)_dbContextCreator();

                if (!_context.Set <Pre_GastosBase>().Where(x => x.VersionPresupuestoId == verPptoId).Any())
                {
                    return(Tuple.Create(true, errores.ToArray()));
                }

                _context.Database.CommandTimeout = 0;

                _context.GenVersion_Ppto_Gastos(verPptoId, generarNuevaVersion, observaciones, userName, ejercicio, consecutivo);


                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 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));
        }
Beispiel #6
0
        public Tuple <bool, string[]> ActualizarBase(short empresaId, int ejercicio, int versionProcesarID, string idTemporal)
        {
            bool          todoCorrecto = false;
            List <string> errores      = new List <string>();

            try
            {
                FTPresupuestoEntities _contextDB = _dbContextCreator() as FTPresupuestoEntities;
                //_contextDB.Database.BeginTransaction();
                _contextDB.Database.CommandTimeout = 0;
                _contextDB.ActualizarBase_Ppto_Semillas(0, empresaId, 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 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"));
        }
        public ActionResult BatchEditingUpdateModel(MVCxGridViewBatchUpdateValues <PreFertilizanteBaseTotal, object> updateValues)
        {
            FTPresupuestoEntities dbContext = new FTPresupuestoEntities();
            int    empresaId     = -1;
            int    sucursalId    = -1;
            string tipoClienteId = "";
            int    verPptoId     = -1;

            foreach (var FertilizanteBTF in updateValues.Update)
            {
                var modelItemF = dbContext.PreFertilizanteBaseTotal.FirstOrDefault(it => it.Oid == FertilizanteBTF.Oid);
                empresaId     = modelItemF.Clave_Empresa;
                sucursalId    = modelItemF.Clave_Sucursal;
                tipoClienteId = modelItemF.Tipocliente;
                verPptoId     = (int)modelItemF.VersionPresupuestoId;
                break;
            }

            var model =
                dbContext.PreFertilizanteBaseTotal
                .Where(p => p.Clave_Empresa == empresaId && p.Clave_Sucursal == sucursalId && p.Tipocliente == tipoClienteId && p.VersionPresupuestoId == verPptoId)
                .ToList();

            #region INSERT

            // Insert all added values.
            foreach (var FertilizanteBT in updateValues.Insert)
            {
                if (updateValues.IsValid(FertilizanteBT))
                {
                    try
                    {
                        model.Add(FertilizanteBT);
                        dbContext.SaveChanges();
                    }
                    catch (Exception e)
                    {
                        updateValues.SetErrorText(FertilizanteBT, e.Message);
                    }
                }
            }

            #endregion

            #region UPDATE

            // Update all edited values.
            if (updateValues.Update.Count > 0)
            {
                foreach (var FertilizanteBT in updateValues.Update)
                {
                    if (updateValues.IsValid(FertilizanteBT))
                    {
                        try
                        {
                            bool cambioIncTons = false;
                            bool cambioIncMG   = false;
                            var  modelItem     = model.FirstOrDefault(it => it.Oid == FertilizanteBT.Oid);
                            if (modelItem != null)
                            {
                                if (modelItem.PtjeIncEspecificoTons != FertilizanteBT.PtjeIncEspecificoTons)
                                {
                                    cambioIncTons = true;
                                }
                                if (modelItem.PtjeIncEspecificoMG != FertilizanteBT.PtjeIncEspecificoMG)
                                {
                                    cambioIncMG = true;
                                }

                                modelItem.PtjeIncEspecificoTons = FertilizanteBT.PtjeIncEspecificoTons;
                                modelItem.PtjeIncEspecificoMG   = FertilizanteBT.PtjeIncEspecificoMG;

                                // TOMA VALORES MENSUALES Y SOBRE ESE HACE LOS CALCULOS
                                var     modelMeses = dbContext.PreFertilizanteMensual.Where(m => m.BaseTotalId == modelItem.Oid).ToList();
                                decimal?toneladas  = 0m;
                                decimal?ventas     = 0m;
                                decimal?margen     = 0m;
                                decimal incTons    = (decimal)modelItem.PtjeIncEspecificoTons / 100m;
                                decimal incMG      = (decimal)modelItem.PtjeIncEspecificoMG / 100m;
                                foreach (var itemMes in modelMeses)
                                {
                                    if (!itemMes.ToneladaManual)
                                    {
                                        itemMes.Toneladas = itemMes.ToneladasBase * (1m + incTons);
                                    }
                                    itemMes.Importe = itemMes.Toneladas * itemMes.PrecioVenta;
                                    if (!itemMes.PtjeMargenManual)
                                    {
                                        if (cambioIncMG)
                                        {
                                            if (incMG != 0m)
                                            {
                                                itemMes.PtjeMargen = modelItem.PtjeIncEspecificoMG;
                                            }
                                            else
                                            {
                                                itemMes.PtjeMargen = itemMes.PtjeMargenBase;
                                            }
                                        }
                                    }
                                    itemMes.Margen = itemMes.Importe * (((decimal)itemMes.PtjeMargen) / 100m);
                                    //itemMes.Margen = itemMes.Importe * ((decimal)itemMes.PtjeMargen);
                                    switch (itemMes.Mes)
                                    {
                                    case 1:
                                        modelItem.EneImporte = itemMes.Importe;
                                        modelItem.EneMargen  = itemMes.Margen;
                                        modelItem.EneTons    = itemMes.Toneladas;
                                        break;

                                    case 2:
                                        modelItem.FebImporte = itemMes.Importe;
                                        modelItem.FebMargen  = itemMes.Margen;
                                        modelItem.FebTons    = itemMes.Toneladas;
                                        break;

                                    case 3:
                                        modelItem.MarImporte = itemMes.Importe;
                                        modelItem.MarMargen  = itemMes.Margen;
                                        modelItem.MarTons    = itemMes.Toneladas;
                                        break;

                                    case 4:
                                        modelItem.AbrImporte = itemMes.Importe;
                                        modelItem.AbrMargen  = itemMes.Margen;
                                        modelItem.AbrTons    = itemMes.Toneladas;
                                        break;

                                    case 5:
                                        modelItem.MayImporte = itemMes.Importe;
                                        modelItem.MayMargen  = itemMes.Margen;
                                        modelItem.MayTons    = itemMes.Toneladas;
                                        break;

                                    case 6:
                                        modelItem.JunImporte = itemMes.Importe;
                                        modelItem.JunMargen  = itemMes.Margen;
                                        modelItem.JunTons    = itemMes.Toneladas;
                                        break;

                                    case 7:
                                        modelItem.JulImporte = itemMes.Importe;
                                        modelItem.JulMargen  = itemMes.Margen;
                                        modelItem.JulTons    = itemMes.Toneladas;
                                        break;

                                    case 8:
                                        modelItem.AgoImporte = itemMes.Importe;
                                        modelItem.AgoMargen  = itemMes.Margen;
                                        modelItem.AgoTons    = itemMes.Toneladas;
                                        break;

                                    case 9:
                                        modelItem.SepImporte = itemMes.Importe;
                                        modelItem.SepMargen  = itemMes.Margen;
                                        modelItem.SepTons    = itemMes.Toneladas;
                                        break;

                                    case 10:
                                        modelItem.OctImporte = itemMes.Importe;
                                        modelItem.OctMargen  = itemMes.Margen;
                                        modelItem.OctTons    = itemMes.Toneladas;
                                        break;

                                    case 11:
                                        modelItem.NovImporte = itemMes.Importe;
                                        modelItem.NovMargen  = itemMes.Margen;
                                        modelItem.NovTons    = itemMes.Toneladas;
                                        break;

                                    case 12:
                                        modelItem.DicImporte = itemMes.Importe;
                                        modelItem.DicMargen  = itemMes.Margen;
                                        modelItem.DicTons    = itemMes.Toneladas;
                                        break;

                                    default:
                                        break;
                                    }
                                    toneladas += itemMes.Toneladas;
                                    ventas    += itemMes.Importe;
                                    margen    += itemMes.Margen;
                                }

                                modelItem.PresupuestoTons   = toneladas;
                                modelItem.PresupuestoVentas = ventas;
                                modelItem.PresupuestoMargen = margen;

                                // SE INICIALIZA A 0 EL PTJEINCRMENETOGENERALTONS PARA QUE SE SI SE CAMBIA ESE PTJE NO AFECTE EL INCREMENTO INDIVIDUAL
                                if (cambioIncTons)
                                {
                                    modelItem.PtjeIncGeneralTons = 0d;
                                }
                                // SE ACTUALIZA LA BD
                                dbContext.SaveChanges();
                            }
                        }
                        catch (Exception e)
                        {
                            updateValues.SetErrorText(FertilizanteBT, e.Message);
                        }
                    }
                }
            }

            #endregion

            #region Delete

            // Delete all values that were deleted on the client side from the data source.
            foreach (var oID in updateValues.DeleteKeys)
            {
                try
                {
                    long FertilizanteID = Convert.ToInt64(oID);
                    var  item           = model.FirstOrDefault(it => it.Oid == FertilizanteID);
                    if (item != null)
                    {
                        model.Remove(item);
                    }
                    dbContext.SaveChanges();
                }
                catch (Exception e)
                {
                    updateValues.SetErrorText(oID, e.Message);
                }
            }

            #endregion

            //var modelRecargado = FTPresupuestoProvider.GetFertilizantesBaseTotal(empresaId, sucursalId);

            ejercicioCerrado    = FTPresupuestoProvider.getVersionPresupuestoEstatus(enumTipoDePresupuesto.FERTILIZANTES);
            ViewData["cerrado"] = (ejercicioCerrado ? "S" : "N");
            return(PartialView("_GridViewFertilizantesPartial", model.OrderBy(x => x.Desc_Grupo).ThenBy(x => x.Desc_Familia).ToList()));
        }
Beispiel #11
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 GenericRepository(FTPresupuestoEntities DBEntity)
 {
     _DBEntity = DBEntity;
     _dbSet    = _DBEntity.Set <Tbl_Entity>();
 }
        public ActionResult AplicarGastos(string ptjeGeneral, int?EmpresaID, int?SucursalID)
        {
            FTPresupuestoEntities _dbContext = new FTPresupuestoEntities();
            double ptje = 0d;

            if (!string.IsNullOrEmpty(ptjeGeneral))
            {
                //double.TryParse("0" + ptjeGeneral, out ptje);
                ptje = Convert.ToDouble(ptjeGeneral);
            }
            int empresaID  = EmpresaID.HasValue ? (int)EmpresaID : -1;
            int sucursalID = SucursalID.HasValue ? (int)SucursalID : -1;

            int verPptoId = FTPresupuestoProvider.getVersionPresupuestoIdByTipo(enumTipoDePresupuesto.GASTOS);

            var modelList = _dbContext.Pre_GastosBase
                            .Where(p => p.Clave_Empresa == empresaID && p.Clave_CCostos == sucursalID && p.VersionPresupuestoId == verPptoId);

            foreach (var modelItem in modelList)
            {
                // CALCULA EL PRESUPUESTO SOLO A LOS QUE NO TIENEN UN PTJE DE INCREMENTO ESPECIFICO
                if (modelItem.IncPtjeIndividual == 0d || modelItem.IncPtjeGlobal != 0d)
                {
                    modelItem.IncPtjeGlobal     = ptje;
                    modelItem.IncPtjeIndividual = ptje;

                    // TOMA VALORES MENSUALES Y SOBRE ESE HACE LOS CALCULOS
                    var     modelMeses = _dbContext.PreGastoMensual.Where(m => m.BaseTotalId == modelItem.Oid).ToList();
                    decimal?importe    = 0m;
                    decimal incImporte = (decimal)modelItem.IncPtjeIndividual / 100m;

                    foreach (var itemMes in modelMeses)
                    {
                        if (!itemMes.MontoManual)
                        {
                            itemMes.Monto = itemMes.MontoBase + (itemMes.MontoBase * incImporte);
                        }
                        switch (itemMes.Mes)
                        {
                        case 1:
                            modelItem.EneImporte = itemMes.Monto;
                            break;

                        case 2:
                            modelItem.FebImporte = itemMes.Monto;
                            break;

                        case 3:
                            modelItem.MarImporte = itemMes.Monto;
                            break;

                        case 4:
                            modelItem.AbrImporte = itemMes.Monto;
                            break;

                        case 5:
                            modelItem.MayImporte = itemMes.Monto;
                            break;

                        case 6:
                            modelItem.JunImporte = itemMes.Monto;
                            break;

                        case 7:
                            modelItem.JulImporte = itemMes.Monto;
                            break;

                        case 8:
                            modelItem.AgoImporte = itemMes.Monto;
                            break;

                        case 9:
                            modelItem.SepImporte = itemMes.Monto;
                            break;

                        case 10:
                            modelItem.OctImporte = itemMes.Monto;
                            break;

                        case 11:
                            modelItem.NovImporte = itemMes.Monto;
                            break;

                        case 12:
                            modelItem.DicImporte = itemMes.Monto;
                            break;

                        default:
                            break;
                        }
                        importe += itemMes.Monto;
                    }

                    modelItem.Monto = importe;
                }
            }
            // ACTUALIZA LA BD
            _dbContext.SaveChanges();

            //var model = FTPresupuestoProvider.GetGastosBaseTotal(empresaID, sucursalID);
            ejercicioCerrado    = FTPresupuestoProvider.getVersionPresupuestoEstatus(enumTipoDePresupuesto.GASTOS);
            ViewData["cerrado"] = (ejercicioCerrado ? "S" : "N");
            return(PartialView("_GridGastosViewPartial", modelList.OrderBy(x => x.Desc_Area).ThenBy(x => x.NSubcuenta).ToList()));
        }
        public ActionResult BatchEditingUpdateModel(MVCxGridViewBatchUpdateValues <Pre_GastosBase, object> updateValues)
        {
            FTPresupuestoEntities _dbContext = new FTPresupuestoEntities();
            int empresaId  = -1;
            int sucursalId = -1;
            int verPptoId  = -1;

            foreach (var gastoBTF in updateValues.Update)
            {
                var modelItemF = _dbContext.Pre_GastosBase.FirstOrDefault(it => it.Oid == gastoBTF.Oid);
                empresaId  = (int)modelItemF.Clave_Empresa;
                sucursalId = (int)modelItemF.Clave_CCostos;
                verPptoId  = (int)modelItemF.VersionPresupuestoId;
                break;
            }
            //if (updateValues.Update.Count > 0)
            //{
            //    var modelItemValid = db.Pre_GastosBases.FirstOrDefault(mi=> mi.Oid == updateValues.Update[0].Oid);
            //    empresaId = modelItemValid.Clave_Empresa;
            //    sucursalId = modelItemValid.Clave_Sucursal;
            //}


            var model = _dbContext.Pre_GastosBase.
                        Where(p => p.Clave_Empresa == empresaId && p.Clave_CCostos == sucursalId && p.VersionPresupuestoId == verPptoId)
                        .ToList();

            #region INSERT

            // Insert all added values.
            foreach (var gastoBT in updateValues.Insert)
            {
                if (updateValues.IsValid(gastoBT))
                {
                    try
                    {
                        model.Add(gastoBT);
                        _dbContext.SaveChanges();
                    }
                    catch (Exception e)
                    {
                        updateValues.SetErrorText(gastoBT, e.Message);
                    }
                }
            }

            #endregion

            #region UPDATE

            // Update all edited values.
            if (updateValues.Update.Count > 0)
            {
                foreach (var gastoBT in updateValues.Update)
                {
                    if (updateValues.IsValid(gastoBT))
                    {
                        try
                        {
                            bool cambioInc = false;
                            var  modelItem = model.FirstOrDefault(it => it.Oid == gastoBT.Oid);
                            if (modelItem != null)
                            {
                                if (modelItem.IncPtjeIndividual != gastoBT.IncPtjeIndividual)
                                {
                                    cambioInc = true;
                                }

                                modelItem.IncPtjeIndividual = gastoBT.IncPtjeIndividual;


                                // TOMA VALORES MENSUALES Y SOBRE ESE HACE LOS CALCULOS
                                var     modelMeses = _dbContext.PreGastoMensual.Where(m => m.BaseTotalId == modelItem.Oid).ToList();
                                decimal?importe    = 0m;
                                decimal incImporte = (decimal)modelItem.IncPtjeIndividual / 100m;
                                foreach (var itemMes in modelMeses)
                                {
                                    if (!itemMes.MontoManual)
                                    {
                                        itemMes.Monto = itemMes.MontoBase * (1m + incImporte);
                                    }
                                    switch (itemMes.Mes)
                                    {
                                    case 1:
                                        modelItem.EneImporte = itemMes.Monto;
                                        break;

                                    case 2:
                                        modelItem.FebImporte = itemMes.Monto;
                                        break;

                                    case 3:
                                        modelItem.MarImporte = itemMes.Monto;
                                        break;

                                    case 4:
                                        modelItem.AbrImporte = itemMes.Monto;
                                        break;

                                    case 5:
                                        modelItem.MayImporte = itemMes.Monto;
                                        break;

                                    case 6:
                                        modelItem.JunImporte = itemMes.Monto;
                                        break;

                                    case 7:
                                        modelItem.JulImporte = itemMes.Monto;
                                        break;

                                    case 8:
                                        modelItem.AgoImporte = itemMes.Monto;
                                        break;

                                    case 9:
                                        modelItem.SepImporte = itemMes.Monto;
                                        break;

                                    case 10:
                                        modelItem.OctImporte = itemMes.Monto;
                                        break;

                                    case 11:
                                        modelItem.NovImporte = itemMes.Monto;
                                        break;

                                    case 12:
                                        modelItem.DicImporte = itemMes.Monto;
                                        break;

                                    default:
                                        break;
                                    }
                                    importe += itemMes.Monto;
                                }


                                modelItem.Monto = importe;
                                // SE INICIALIZA A 0 EL PTJEINCRMENETOGENERALTONS PARA QUE SE SI SE CAMBIA ESE PTJE NO AFECTE EL INCREMENTO INDIVIDUAL
                                if (cambioInc)
                                {
                                    modelItem.IncPtjeGlobal = 0d;
                                }
                                // SE ACTUALIZA LA BD
                                _dbContext.SaveChanges();
                            }
                        }
                        catch (Exception e)
                        {
                            updateValues.SetErrorText(gastoBT, e.Message);
                        }
                    }
                }
            }

            #endregion

            #region Delete

            // Delete all values that were deleted on the client side from the data source.
            foreach (var oID in updateValues.DeleteKeys)
            {
                try
                {
                    long agroquimicoID = Convert.ToInt64(oID);
                    var  item          = model.FirstOrDefault(it => it.Oid == agroquimicoID);
                    if (item != null)
                    {
                        model.Remove(item);
                    }
                    _dbContext.SaveChanges();
                }
                catch (Exception e)
                {
                    updateValues.SetErrorText(oID, e.Message);
                }
            }

            #endregion

            //var modelRecargado = FTPresupuestoProvider.GetAgroquimicosBaseTotal(empresaId, sucursalId);

            ejercicioCerrado    = FTPresupuestoProvider.getVersionPresupuestoEstatus(enumTipoDePresupuesto.GASTOS);
            ViewData["cerrado"] = (ejercicioCerrado ? "S" : "N");
            return(PartialView("_GridGastosViewPartial", model.OrderBy(x => x.Desc_Area).ThenBy(x => x.NSubcuenta).ToList()));
        }
        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));
        }