public void SetPreferencia(TipoDocumentoImpresion tipoDocumento, Guid usuario,TipoPrivacidadDocumento tipoprivacidad,TipoReport tiporeport, string name, byte[] report,bool defecto=false)
        {

            using (var tran = Marfil.Inf.Genericos.Helper.TransactionScopeBuilder.CreateTransactionObject())
            {
                var item = _db.DocumentosUsuario.SingleOrDefault(f => f.fkusuario == usuario && f.tipo == (int)tipoDocumento && f.nombre == name) ??
                           _db.DocumentosUsuario.Create();

                item.fkusuario = usuario;
                item.tipo = (int)tipoDocumento;
                item.nombre = name;
                item.datos = report;
                item.tipoprivacidad = (int)tipoprivacidad;
                item.tiporeport = (int)tiporeport;
                

                _db.DocumentosUsuario.AddOrUpdate(item);
                _db.SaveChanges();

                if (defecto && tiporeport==TipoReport.Report)
                {
                    var service = new PreferenciasUsuarioService(_db);
                    service.SetPreferencia(TiposPreferencias.DocumentoImpresionDefecto, usuario, tipoDocumento.ToString(), "Defecto", new PreferenciaDocumentoImpresionDefecto() { Name = name, Tipodocumento = tipoDocumento, Usuario = usuario });
                }
                

                tran.Complete();
            }


        }
        public virtual void create(IModelView obj)
        {
            var newItem = _converterModel.CreatePersitance(obj);

            if (_validationService.ValidarGrabar(newItem))
            {
                _db.Set <TPersistencia>().Add(newItem);
                try
                {
                    _db.SaveChanges();
                    _converterModel.AsignaId(newItem, ref obj);
                }
                catch (DbEntityValidationException ex)
                {
                    // Retrieve the error messages as a list of strings.
                    var errorMessages = ex.EntityValidationErrors
                                        .SelectMany(x => x.ValidationErrors)
                                        .Select(x => x.ErrorMessage);

                    // Join the list to a single string.
                    var fullErrorMessage = string.Join("; ", errorMessages);

                    // Combine the original exception message with the new one.
                    var exceptionMessage = string.Concat(ex.Message, " The validation errors are: ", fullErrorMessage);

                    // Throw a new DbEntityValidationException with the improved exception message.
                    throw new DbEntityValidationException(exceptionMessage, ex.EntityValidationErrors);
                }
                catch (DbUpdateException ex)
                {
                    if (ex.InnerException != null &&
                        ex.InnerException.InnerException != null)
                    {
                        var inner = ex.InnerException.InnerException as SqlException;
                        if (inner != null)
                        {
                            if (inner.Number == 2627 || inner.Number == 2601)
                            {
                                throw new ValidationException(General.ErrorRegistroExistente);
                            }
                        }
                    }


                    throw ex;
                }
            }
        }
        public void CreateAdmin(string password)
        {
            using (var tran = TransactionScopeBuilder.CreateTransactionObject())
            {
                if (!_db.Administrador.Any())
                {
                    if (string.IsNullOrEmpty(password))
                    {
                        throw new ValidationException("El password no puede estar vacío");
                    }

                    var item = _db.Administrador.Create();
                    item.password = password;
                    _db.Administrador.Add(item);

                    var usuarioAministrador = _db.Usuarios.Create();
                    usuarioAministrador.id       = Guid.Empty;
                    usuarioAministrador.usuario  = ApplicationHelper.UsuariosAdministrador;
                    usuarioAministrador.password = password;
                    usuarioAministrador.nombre   = ApplicationHelper.UsuariosAdministrador;
                    _db.Usuarios.Add(usuarioAministrador);
                    _db.SaveChanges();
                    tran.Complete();
                }
            }
        }
Exemple #4
0
        public void GenerarMovimiento(IStockPieza model, TipoOperacionService tipooperacion, string ubicacionDestino = null)
        {
            using (var tran = Marfil.Inf.Genericos.Helper.TransactionScopeBuilder.CreateTransactionObject())
            {
                //METEMOS EN LA TABLA MOVIMIENTOS DE STOCK DE LA BD EL MOVIMIENTO GENERADO
                GenerarMovimientostock(model, tipooperacion);

                //if (tipooperacion != TipoOperacionService.EntradaReclamacion && tipooperacion != TipoOperacionService.SalidaReclamacion)
                //{
                //jmm
                var entrada = model as MovimientosstockModel;

                if (tipooperacion == TipoOperacionService.MovimientoAlmacen)
                {
                    entrada.Tipomovimiento   = TipoOperacionService.MovimientoAlmacen;
                    entrada.Ubicaciondestino = Convert.ToInt32(ubicacionDestino);
                }
                else if (model is IKitStockPieza)
                {
                    entrada.Tipomovimiento = TipoOperacionService.MovimientoKit;
                }
                else if (model is IBundleStockPieza)
                {
                    entrada.Tipomovimiento = TipoOperacionService.MovimientoBundle;
                }

                var service = new StockService(_context, _db);
                service.GestionPieza(entrada);
                //}

                tran.Complete();
            }

            _db.SaveChanges();
        }
        public void SetPreferencia(TiposPreferencias tipopreferencia, Guid usuario, string id, string name, object preferencia)
        {
            var item = _db.PreferenciasUsuario.SingleOrDefault(f => f.fkUsuario == usuario && f.tipo == (int)tipopreferencia && f.id == id && f.nombre == name) ??
                       _db.PreferenciasUsuario.Create();

            item.fkUsuario = usuario;
            item.tipo      = (int)tipopreferencia;
            item.id        = id;
            item.nombre    = name;

            item.xml = FPreferenciasUsuario.GetXmlPreferencia(tipopreferencia, preferencia);

            _db.PreferenciasUsuario.AddOrUpdate(item);
            _db.SaveChanges();
        }
 private void CreateUsuarioActivo(SecurityTicket model, MarfilEntities db)
 {
     try
     {
         var nuevoUsuarioActivo = db.Usuariosactivos.Create();
         nuevoUsuarioActivo.fkusuarios           = model.Id;
         nuevoUsuarioActivo.fechaconexion        = DateTime.Now;
         nuevoUsuarioActivo.fechaultimaoperacion = DateTime.Now;
         nuevoUsuarioActivo.idconexion           = Guid.NewGuid();
         model.Idconexion = nuevoUsuarioActivo.idconexion;
         db.Usuariosactivos.Add(nuevoUsuarioActivo);
         db.SaveChanges();
     }
     catch (Exception)
     {
         throw new UsuarioensuoException(string.Format("El usuario {0} ya está en uso.", model.Usuario));
     }
 }
        public void GestionPieza(MovimientosstockModel model)
        {
            if (model.Tipomovimiento == TipoOperacionService.InsertarRecepcionStock && !string.IsNullOrEmpty(model.Lote))
            {
                if (_db.Stockactual.Any(f => f.empresa == model.Empresa && f.lote == model.Lote && f.loteid == model.Loteid))
                {
                    throw new ValidationException(string.Format(General.ErrorGenerarMovimientoStock, model.Lote, model.Loteid));
                }
                _db.Stockactual.Add(CrearNuevaPieza(model));
            }
            else if (model.Tipomovimiento == TipoOperacionService.InsertarRecepcionStock)
            {
                //Sin gestión de lote
                if (_db.Stockactual.Any(f => f.empresa == model.Empresa && f.fkarticulos == model.Fkarticulos))
                {
                    _db.Stockactual.AddOrUpdate(EditarPieza(model));
                }
                else
                {
                    _db.Stockactual.Add(CrearNuevaPieza(model));
                }
            }
            else if (model.Tipomovimiento == TipoOperacionService.MovimientoRemedir ||
                     model.Tipomovimiento == TipoOperacionService.MovimientoAlmacen)
            {
                if (model.Tipomovimiento == TipoOperacionService.MovimientoAlmacen)
                {
                    ValidarPerteneceKitOBundle(model);
                }

                var pieza = _db.Stockactual.Any(f => f.empresa == model.Empresa && f.lote == model.Lote && f.loteid == model.Loteid &&
                                                f.fkarticulos == model.Fkarticulos && f.fkalmacenes == model.Fkalmacenes) ?
                            EditarPieza(model) :
                            null;

                if (pieza != null)
                {
                    _db.Stockactual.AddOrUpdate(pieza);
                    _db.SaveChanges();
                }
                else
                {
                    throw new ValidationException(string.Format("No se ha encontrado la pieza {0}{1} en el stock",
                                                                string.IsNullOrEmpty(model.Lote) ? model.Fkarticulos : model.Lote, model.Loteid));
                }
            }
            else if (model.Tipomovimiento == TipoOperacionService.EliminarCostes ||
                     model.Tipomovimiento == TipoOperacionService.InsertarCostes)
            {
                ModificarCostes(model);
            }
            else if (model.Tipomovimiento == TipoOperacionService.MovimientoBundle)
            {
                MovimientoBundle(model);
            }
            else if (model.Tipomovimiento == TipoOperacionService.MovimientoKit)
            {
                MovimientoKit(model);
            }
            else if (model.Tipomovimiento == TipoOperacionService.InsertarTraspasosalmacen ||
                     model.Tipomovimiento == TipoOperacionService.ActualizarTraspasosalmacen ||
                     model.Tipomovimiento == TipoOperacionService.EliminarTraspasosalmacen)
            {
                TraspasoAlmacen(model);
            }
            else if (model.Tipomovimiento == TipoOperacionService.ActualizarRecepcionStock)
            {
                ActualizarLineasRecepcion(model);
            }
            else
            {
                if (model.Tipomovimiento == TipoOperacionService.InsertarDevolucionEntregaStock ||
                    model.Tipomovimiento == TipoOperacionService.InsertarRecepcionStockDevolucion)
                {
                    PermiteRealizarDevolucion(model);
                }


                //SI LA PIEZA ESTA EN STOCK ACTUAL, LA ACTUALIZAS en el historico, Y SI NO LA CREAS en el historico (EN LAS TRANSFORMACIONES AL FINALZIAR SE CREA LA PIEZA)
                var pieza = _db.Stockactual.Any(f => f.empresa == model.Empresa && f.lote == model.Lote && f.loteid == model.Loteid &&
                                                f.fkarticulos == model.Fkarticulos && f.fkalmacenes == model.Fkalmacenes) ?
                            EditarPieza(model) :
                            CrearNuevaPieza(model);

                var actualizar = true;

                if (pieza.cantidadtotal <= 0)//(pieza.cantidaddisponible <= 0)
                {
                    var articulosService = FService.Instance.GetService(typeof(ArticulosModel), _context, _db);
                    var artObj           = articulosService.get(model.Fkarticulos) as ArticulosModel;
                    actualizar = artObj.Stocknegativoautorizado;
                }

                //ENTRA CUANDO FINALIZAS LA TRANSFORMACION
                if (actualizar)
                {
                    _db.Stockactual.AddOrUpdate(pieza);
                }
                //ENTRA CUANDO CREAS LA TRANSFORMACION
                else if (_db.Stockactual.Any(f => f.empresa == model.Empresa && f.lote == model.Lote && f.loteid == model.Loteid &&
                                             f.fkarticulos == model.Fkarticulos)) //almacen?
                {
                    _db.Stockactual.Remove(pieza);
                }
                else
                {
                    throw new ValidationException(string.Format("No se puede modificar la pieza {0}{1} porque ya no está en el stock",
                                                                model.Lote, Funciones.RellenaCod(model.Loteid, 3)));
                }
            }
        }