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; } }
/// <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); }
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)); }
/// <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); }
public async Task <IHttpActionResult> GetMovimentoEstoque(int id) { MovimentoEstoque movimentoEstoque = await db.MovimentosEstoque.FindAsync(id); if (movimentoEstoque == null) { return(NotFound()); } return(Ok(movimentoEstoque)); }
/// <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"); }
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)); }
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; } }
public MovimentoEstoque SalvarMovimentoEstoque(MovimentoEstoque movimento) { return(_repository.SalvarMovimentoEstoque(movimento)); }
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)); }
/// <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); }