public ActionResult EditarCentroCosto(string Id)
        {
            IRepositoryWrapper _repo = new RepositoryWrapper();

            string[]          empresaCentroCosto = Id.Trim().Split('|');
            short             empresaID          = Convert.ToInt16(empresaCentroCosto[0]);
            short             centroCostoID      = Convert.ToInt16(empresaCentroCosto[1]);
            CON_CentrosCostos _cc = _unitOfWork.GetRepositoryInstance <CON_CentrosCostos>()
                                    .GetFirstOrDefaultByParameter(s => s.Clave_Empresa == empresaID && s.Clave_CCostos == centroCostoID);

            if (_cc == null)
            {
                return(RedirectToAction("CentrosCosto", "Catalogos"));
            }
            var model = new CentroDeCostoViewModel();

            model.DivisionID       = _cc.Clave_Division.HasValue ? (int)_cc.Clave_Division : -1;
            model.EmpresaID        = _cc.Clave_Empresa;
            model.Nombre           = _cc.Nombre_CCostos;
            model.RegionDivisionID = (_cc.Clave_Division.HasValue ? (int)_cc.Clave_Division : -1) + ";" + _cc.Clave_Region;
            model.RegionID         = _cc.Clave_Region;
            model.CentroCostoID    = _cc.Clave_CCostos;

            var modelConfig = _repo.CentroCostoConfig.FindByFilter(x => x.EmpresaId == empresaID && x.CentroCostoId == centroCostoID);

            if (modelConfig != null)
            {
                model.AfectaPresupuesto = modelConfig.AfectaPresupuesto;
                model.PresentaBase      = modelConfig.PresentaBase;
            }

            return(View(model));
        }
        public ActionResult EditarCentroCosto(CentroDeCostoViewModel model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    IRepositoryWrapper _repo = new RepositoryWrapper();
                    CON_CentrosCostos  _cc   = _unitOfWork.GetRepositoryInstance <CON_CentrosCostos>()
                                               .GetFirstOrDefaultByParameter(s => s.Clave_Empresa == model.EmpresaID && s.Clave_CCostos == model.CentroCostoID);
                    if (_cc == null)
                    {
                        ViewBag.ErrorMessage = "Error al intentar actualizar los datos del centro de costo";
                        return(View(model));
                    }
                    _cc.Nombre_CCostos = model.Nombre;

                    PreCentrosCostoConfig _ccConfig = _repo.CentroCostoConfig.FindByFilter(x => x.EmpresaId == model.EmpresaID && x.CentroCostoId == model.CentroCostoID);
                    if (_ccConfig == null)
                    {
                        _ccConfig = new PreCentrosCostoConfig
                        {
                            CentroCostoId = model.CentroCostoID,
                            EmpresaId     = model.EmpresaID
                        };
                    }
                    _ccConfig.PresentaBase      = model.PresentaBase;
                    _ccConfig.AfectaPresupuesto = model.AfectaPresupuesto;

                    var resulta = _repo.CentroCostoConfig.AddUpdateCentroCosto(_cc, _ccConfig);
                    if (!resulta.Item1)
                    {
                        throw new Exception(string.Join(Environment.NewLine, resulta.Item2));
                    }

                    //_unitOfWork.GetRepositoryInstance<CON_CentrosCostos>().Update(_cc);
                    //_unitOfWork.SaveChanges();

                    return(RedirectToAction("CentrosCosto", "Catalogos"));
                }
                catch (Exception ex)
                {
                    ViewBag.ErrorMessage = ex.Message;
                }
            }
            else
            {
                ViewBag.ErrorMessage = "La información es incompleta";
            }
            return(View(model));
        }
        public ActionResult AgregarCentroCosto(CentroDeCostoViewModel model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    IRepositoryWrapper _repo = new RepositoryWrapper();
                    if (_unitOfWork.GetRepositoryInstance <CON_CentrosCostos>()
                        .GetExists(s => s.Clave_Empresa == model.EmpresaID && s.Clave_CCostos == model.CentroCostoID))
                    {
                        ViewBag.ErrorMessage = "La clave de centro de costo ya existe para la empresa seleccionada";
                        return(View(model));
                    }
                    CON_CentrosCostos _cc = new CON_CentrosCostos();
                    _cc.Clave_Division  = model.DivisionID;
                    _cc.Clave_Empresa   = model.EmpresaID;
                    _cc.Clave_Region    = model.RegionID;
                    _cc.Clave_SubRegion = 0;
                    //_suc.Clave_Sucursal = model.SucursalID;
                    _cc.Clave_CCostos  = model.CentroCostoID;
                    _cc.Nombre_CCostos = model.Nombre;

                    PreCentrosCostoConfig _ccConfig = new PreCentrosCostoConfig();
                    _ccConfig.AfectaPresupuesto = model.AfectaPresupuesto;
                    _ccConfig.CentroCostoId     = model.CentroCostoID;
                    _ccConfig.EmpresaId         = model.EmpresaID;
                    _ccConfig.PresentaBase      = model.PresentaBase;

                    var resulta = _repo.CentroCostoConfig.AddUpdateCentroCosto(_cc, _ccConfig);
                    if (!resulta.Item1)
                    {
                        throw new Exception(string.Join(Environment.NewLine, resulta.Item2));
                    }
                    //_unitOfWork.GetRepositoryInstance<CON_CentrosCostos>().Add(_cc);

                    return(RedirectToAction("CentrosCosto", "Catalogos"));
                }
                catch (Exception ex)
                {
                    ViewBag.ErrorMessage = ex.Message;
                }
            }
            else
            {
                ViewBag.ErrorMessage = "La información es incompleta";
            }
            return(View(model));
        }
Пример #4
0
        public async Task <Tuple <bool, string[]> > AddUpdateCentroCostoAsync(CON_CentrosCostos entityRecord, PreCentrosCostoConfig entityRecordConfig)
        {
            bool          datosActualizados = false;
            List <string> errores           = new List <string>();

            try
            {
                using (var _dbContext = _dbContextCreator())
                {
                    // ACTUAILLZA CENTRO DE COSTO

                    var _entities = _dbContext.Set <CON_CentrosCostos>();

                    var existingEntity = _entities
                                         .Where(x => x.Clave_Empresa == entityRecord.Clave_Empresa && x.Clave_CCostos == entityRecord.Clave_CCostos)
                                         .SingleOrDefault();

                    if (existingEntity != null)
                    {
                        // Copy current (incoming) values to db entry:
                        _dbContext.Entry(existingEntity).CurrentValues.SetValues(entityRecord);
                    }
                    else
                    {
                        _dbContext.Set <CON_CentrosCostos>().Add(entityRecord);
                        // This also adds its EntityDetailRecords
                    }
                    // ACTUALIZA EN LA BD
                    var result = await _dbContext.SaveChangesAsync();


                    // ACTUALIZA CONFIG  ---------------------------------------------
                    var _entitiesConfig = _dbContext.Set <PreCentrosCostoConfig>();

                    var existingEntityConfig = _entitiesConfig
                                               .Where(x => x.EmpresaId == entityRecordConfig.EmpresaId && x.CentroCostoId == entityRecordConfig.CentroCostoId)
                                               .SingleOrDefault();

                    if (existingEntityConfig != null)
                    {
                        // Copy current (incoming) values to db entry:
                        _dbContext.Entry(existingEntityConfig).CurrentValues.SetValues(entityRecordConfig);
                    }
                    else
                    {
                        _dbContext.Set <PreCentrosCostoConfig>().Add(entityRecordConfig);
                        // This also adds its EntityDetailRecords
                    }
                    // ACTUALIZA EN LA BD
                    result = await _dbContext.SaveChangesAsync();
                }
                datosActualizados = 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));
                    }
                }
                //log.Error(string.Format("Objecto : {0} {1} Mensaje : {2} {3} Fuente  : {4}",
                //    e.Source.ToString(), Environment.NewLine, string.Join(Environment.NewLine, errores), Environment.NewLine, e.StackTrace.ToString()));
                throw new Exception(string.Join(Environment.NewLine, errores));
            }
            catch (Exception ex)
            {
                errores.Add(ex.Message);
                Exception _ex = ex.InnerException;
                while (_ex != null)
                {
                    errores.Add(_ex.Message);
                    _ex = _ex.InnerException;
                }
                //log.Error(string.Format("Objecto : {0} {1} Mensaje : {2} {3} Fuente  : {4}",
                //    ex.Source.ToString(), Environment.NewLine, string.Join(Environment.NewLine, errores), Environment.NewLine, ex.StackTrace.ToString()));
                throw new Exception(string.Join(Environment.NewLine, errores));
            }
            return(Tuple.Create(datosActualizados, errores.ToArray()));
        }