Example #1
0
 public MovimentoEstoque SalvarMovimentoEstoque(MovimentoEstoque movimento)
 {
     try
     {
         if (movimento.IdMaterial > 0)
         {
             Context.Entry(movimento).State = EntityState.Modified;
         }
         else
         {
             Context.MovimentoEstoque.Add(movimento);
         }
         Context.SaveChanges();
         return(movimento);
     }
     catch (DbEntityValidationException e)
     {
         foreach (var eve in e.EntityValidationErrors)
         {
             Console.WriteLine("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)
             {
                 Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"",
                                   ve.PropertyName, ve.ErrorMessage);
             }
         }
         throw;
     }
 }
Example #2
0
 /// <summary>
 /// Adiciona o movimento no contexto e atualiza o saldo do produto.
 /// </summary>
 /// <param name="movimento">Movimento que está sendo criado.</param>
 /// <returns>O movimento que foi criado.</returns>
 public MovimentoEstoque CriarMovimento(MovimentoEstoque movimento)
 {
     Context.MovimentosEstoque.Add(movimento);
     movimento.Produto.Saldo += movimento.Quantidade;
     Context.Entry(movimento.Produto).State = EntityState.Modified;
     return(movimento);
 }
Example #3
0
        public async Task <IHttpActionResult> PostMovimentoEstoque(MovimentoEstoqueBindingModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var produto = await db.Produtos.FindAsync(model.IdProduto);

            if (produto == null)
            {
                ThrowProdutoNotFound(model.IdProduto.Value);
            }

            var movimento = new MovimentoEstoque
            {
                Produto    = produto,
                Quantidade = model.Quantidade,
                Data       = model.Data.GetValueOrDefault(DateTime.Now),
                Observacao = model.Observacao
            };

            service.CriarMovimento(movimento);

            await db.SaveChangesAsync();

            return(CreatedAtRoute("DefaultApi", new { movimento.Id }, movimento));
        }
Example #4
0
        /// <summary>
        /// Atualiza o saldo do produto do movimento com base nos novos valores.
        /// </summary>
        /// <param name="movimento">Dados que serão atualizados. Deve pertencer ao contexto.</param>
        /// <param name="quantidadeAnterior">Quantidade anterior do movimento de estoque para adicionar a diferença no saldo do produto.</param>
        /// <returns>O movimento de estoque que foi alterado.</returns>
        public MovimentoEstoque EditarMovimento(MovimentoEstoque movimento, int quantidadeAnterior)
        {
            int quantidadeNova = movimento.Quantidade;
            int diferenca      = quantidadeNova - quantidadeAnterior;
            int saldoAnterior  = movimento.Produto.Saldo;
            int saldoNovo      = saldoAnterior + diferenca;

            movimento.Produto.Saldo = saldoNovo;
            return(movimento);
        }
Example #5
0
        public async Task <IHttpActionResult> GetMovimentoEstoque(int id)
        {
            MovimentoEstoque movimentoEstoque = await db.MovimentosEstoque.FindAsync(id);

            if (movimentoEstoque == null)
            {
                return(NotFound());
            }

            return(Ok(movimentoEstoque));
        }
Example #6
0
        /// <summary>
        /// Cria um movimento de estoque a partir do item de uma venda. O item deve pertencer ao contexto.
        /// </summary>
        /// <param name="itemVenda">O item da venda a partir do qual será criado o movimento de estoque. Deve pertencer ao contexto.</param>
        /// <returns>O movimento de estoque criado.</returns>
        public MovimentoEstoque CriarMovimento(ItemVenda itemVenda)
        {
            MovimentoEstoque movimento = new MovimentoEstoque
            {
                Produto    = itemVenda.Produto,
                Quantidade = itemVenda.Quantidade * (-1)
            };

            itemVenda.Produto.MovimentosEstoque.Add(movimento);
            itemVenda.MovimentoEstoque = movimento;
            return(CriarMovimento(movimento));
        }
        public MovimentoEstoque Update(MovimentoEstoque entity)
        {
            if (!entity.Validar())
            {
                return(entity);
            }

            if (entity.Valid)
            {
                this._movimentoEstoqueRepository.Update(entity);
            }

            return(entity);
        }
        public CardMovimentoEstoque(MovimentoEstoque mov)
        {
            InitializeComponent();

            comboBox.Visibility = Visibility.Hidden;
            lbTipo.Content      = mov.Tipo;
            if (mov.Tipo.Equals("Entrada"))
            {
                lbTipo.Foreground = Brushes.Blue;
            }
            else
            {
                lbTipo.Foreground = Brushes.LightSeaGreen;
            }

            lbQuant.Content = $"{mov.Quant} UN";
            lbData.Content  = mov.Data.ToString("dd/MM/yyyy");
        }
Example #9
0
        public async Task <IHttpActionResult> DeleteMovimentoEstoque(int id)
        {
            MovimentoEstoque movimentoEstoque = await db.MovimentosEstoque.FindAsync(id);

            if (movimentoEstoque == null)
            {
                return(NotFound());
            }

            try
            {
                service.RemoverMovimento(movimentoEstoque);
                await db.SaveChangesAsync();
            }
            catch (DbUpdateException)
            {
                throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.InternalServerError,
                                                                            "Esse movimento foi gerado por uma venda e não pode ser excluído."));
            }

            return(Ok(movimentoEstoque));
        }
Example #10
0
 public void ExcluirMovimentoEstoque(MovimentoEstoque mov)
 {
     try
     {
         mov.SetSituacao("Excluido");
         Context.Entry(mov).State = EntityState.Modified;
         Context.SaveChanges();
     }
     catch (DbEntityValidationException e)
     {
         foreach (var eve in e.EntityValidationErrors)
         {
             Console.WriteLine("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)
             {
                 Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"",
                                   ve.PropertyName, ve.ErrorMessage);
             }
         }
         throw;
     }
 }
Example #11
0
 public MovimentoEstoque SalvarMovimentoEstoque(MovimentoEstoque movimento)
 {
     return(_repository.SalvarMovimentoEstoque(movimento));
 }
Example #12
0
 public void ExcluirMovimentoEstoque(MovimentoEstoque mov)
 {
     _repository.ExcluirMovimentoEstoque(mov);
 }
 public void Delete(MovimentoEstoque entity)
 {
     this._movimentoEstoqueRepository.Delete(entity);
 }
        public IActionResult Post([FromBody] MovimentoEstoque t)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (t.CodigoTransferencia == TRANSFERENCIA && t.LocalEstoqueEntrada == t.LocalEstoqueSaida)
            {
                ModelState.AddModelError("LocalEstoque", "Local de Estoque nao pode ser igual na transferencia.");
                return(BadRequest(ModelState));
            }

            if (!produtoService.existeCodigo(t.CodigoItem))
            {
                ModelState.AddModelError(string.Empty, "Produto nao cadastrato.");
                return(BadRequest(ModelState));
            }

            if (t.QuantidadeAtual <= 0)
            {
                ModelState.AddModelError(string.Empty, "Informe Quantidade maior que zero.");
                return(BadRequest(ModelState));
            }

            try
            {
                switch (t.CodigoTransferencia)
                {
                case SALDO_INICIAL:
                    service.EntradaItem(t.CodigoItem, t.LocalEstoqueEntrada, t.QuantidadeAtual);
                    break;

                case ACERTO_MAIOR:
                    service.EntradaItem(t.CodigoItem, t.LocalEstoqueEntrada, t.QuantidadeAtual);
                    break;

                case ACERTO_MENOR:
                    service.SaidaItem(t.CodigoItem, t.LocalEstoqueSaida, t.QuantidadeAtual);
                    break;

                case TRANSFERENCIA:
                    service.SaidaItem(t.CodigoItem, t.LocalEstoqueSaida, t.QuantidadeAtual);
                    service.EntradaItem(t.CodigoItem, t.LocalEstoqueEntrada, t.QuantidadeAtual);
                    break;

                default:
                    throw new Exception("Codigo do movimento de estoque invalido.");
                }

                db.MovimentoEstoque.Add(t);
                db.SaveChanges();
            }
            catch (Exception ex)
            {
                if (EntityExists(t.RowId))
                {
                    return(Conflict());
                }
                else
                {
                    ModelState.AddModelError(ex.GetType().ToString(), ex.Message);
                    return(BadRequest(ModelState));
                }
            }

            return(Created(t));
        }
Example #15
0
 /// <summary>
 /// Remove o movimento de estoque e atualiza o saldo do produto.
 /// </summary>
 /// <param name="movimento">O movimento que está sendo removido. Deve pertencer ao contexto.</param>
 /// <returns>Movimento de estoque que foi removido.</returns>
 public MovimentoEstoque RemoverMovimento(MovimentoEstoque movimento)
 {
     movimento.Produto.Saldo -= movimento.Quantidade;
     Context.MovimentosEstoque.Remove(movimento);
     return(movimento);
 }