[ProducesResponseType(500)] //Erro interno do servidor public IActionResult Inativar(int id, [FromBody] Produto produto) { try { if (id == produto.Id) { if (produto.TipoProduto == EnumTipoProduto.MATERIA_PRIMA) { if (!_ingredienteRepositorio.MateriaPrimaSemProdutoFinal(produto.Id)) { return(BadRequest("Materia-prima utlizada em produtos finais produzidos. Não pode ser inativada.")); } } produto.Situacao = false; _produtoRepositorio.Alterar(produto); return(Ok("Produto inativado com sucesso.")); } else { return(BadRequest("Falha na inativação do produto.")); } } catch (Exception e) { return(StatusCode(StatusCodes.Status500InternalServerError)); } }
[ProducesResponseType(500)] //Erro interno do servidor public IActionResult Post([FromBody] ProdutoFinalProduzido produtoParaProduzir) { //busca o Produto final da base, para pegar os dados atualizados de receita ProdutoFinalProduzido produtoFinalProduzido = _produtoRepositorio.SelecionarProdutoFinalProduzido(produtoParaProduzir.Id); //QuantidadeEstoque = qtd para Produzir // para verificacao foreach (var item in produtoFinalProduzido.Receita) { //verifica estoque materia prima ProdutoMateriaPrima materiaPrima = (ProdutoMateriaPrima)_produtoRepositorio.Selecionar(item.IdMateriaPrima); if (!materiaPrima.VerificaEstoqueQuantidadeMateiraPrima(item.Quantidade * produtoParaProduzir.QuantidadeEstoque)) { return(BadRequest($"Não possui estoque suficiente para o produto {item.MateriaPrima.Nome}.")); } } //cria a movimentacao de estoque do produto final Estoque estoque = new Estoque() { Produto = produtoFinalProduzido, Data = DateTime.Now, Quantidade = produtoParaProduzir.QuantidadeEstoque, TipoEstoque = EnumTipoEstoque.ENTRADA }; _estoqueRepositorio.Incluir(estoque); produtoFinalProduzido.QuantidadeEstoque += estoque.Quantidade; // para retirada do estoque foreach (var item in produtoFinalProduzido.Receita) { ProdutoMateriaPrima materiaPrima = (ProdutoMateriaPrima)_produtoRepositorio.Selecionar(item.IdMateriaPrima); //cria a movimentacao de estoque do produto materia prima Estoque estoqueMateiraPrima = new Estoque() { Produto = materiaPrima, Data = DateTime.Now, Quantidade = produtoParaProduzir.QuantidadeEstoque * item.Quantidade, TipoEstoque = EnumTipoEstoque.SAIDA }; _estoqueRepositorio.Incluir(estoqueMateiraPrima); materiaPrima.QuantidadeEstoque -= estoqueMateiraPrima.Quantidade; _produtoRepositorio.Alterar(materiaPrima); } _produtoRepositorio.Alterar(produtoFinalProduzido); return(Ok("O produto final produzido selecionado foi atualizado com sucesso no estoque.")); }
public string AlterarProduto(Produto produto) { if (produto == null) { return(null); } return(_produtoRepositorio.Alterar(produto)); }
public async Task <IActionResult> Edit(int id, Produto produto) { if (id != produto.ProdutoId) { return(NotFound()); } if (ModelState.IsValid) { try { await _produtoRepositorio.Alterar(produto); } catch (DbUpdateConcurrencyException) { throw; } return(RedirectToAction(nameof(Index))); } ViewData["FornecedorId"] = new SelectList(await _fornecedorRepositorio.ListarTodos(), "PessoaId", "RazaoSocial", produto.FornecedorId); return(View(produto)); }
public ActionResult <List <FechamentoCaixaDTO> > Put(int id, [FromBody] Caixa caixa) { if (caixa == null) { return(BadRequest("Não foi possível fechar o caixa, sem dados para o fechamento.")); } if (id == caixa.Id) { var caixaBaseDeDados = _caixaRepositorio.Selecionar(id); if (caixaBaseDeDados.EstaAberto()) { foreach (var item in caixa.Descartes) { ProdutoFinal descarte = (ProdutoFinal)_produtoRepositorio.Selecionar(item.IdProdutoFinal); Estoque estoqueDescarte = new Estoque() { Produto = descarte, Data = DateTime.Now, Quantidade = item.Quantidade, TipoEstoque = EnumTipoEstoque.SAIDA }; _estoqueRepositorio.Incluir(estoqueDescarte); descarte.QuantidadeEstoque -= estoqueDescarte.Quantidade; _produtoRepositorio.Alterar(descarte); } caixaBaseDeDados.DataFechameto = DateTime.Now; caixaBaseDeDados.SituacaoCaixa = EnumSitucaoCaixa.FECHADO; _caixaRepositorio.Alterar(caixaBaseDeDados); var valores = _vendaRepositorio.VendaCaixa(caixa.Id); return(Ok(valores)); } } return(BadRequest("Impossível realizar o fechamento do caixa, pois o caixa não está aberto.")); }
public void Alterar(IProdutoRepositorio repositorio) { repositorio.Alterar(this); }
[ProducesResponseType(500)] //Erro interno do servidor public ActionResult <VendaDTO> RealizarVenda([FromBody] Venda venda) { try { if (venda == null) { return(BadRequest("Venda não foi finalizada com sucesso")); } if (venda.Data.Date < DateTime.Now.Date) { return(BadRequest("A venda não foi realizada, a data da venda não pode ser anterior a hoje")); } if (venda.Data.Date > DateTime.Now.Date) { return(BadRequest("A venda não foi realizada, a data da venda não pode ser posterior a hoje")); } if (venda.Valor <= 0) { return(BadRequest("Não será permitido realizar a venda se o valor for zero ")); } if (venda.TipoPagamento == EnumTipoPagamento.DINHEIRO && venda.ValorRecebido < venda.Valor) { return(BadRequest("Não será permitido realizar a venda. O valor recebido é menor que o valor da venda.")); } decimal totalVenda = 0; foreach (var item in venda.Itens) { ProdutoFinal produtoFinal = (ProdutoFinal)_produtoRepositorio.Selecionar(item.IdProdutoFinal); totalVenda += produtoFinal.Valor * item.Quantidade; if ((produtoFinal.QuantidadeEstoque - item.Quantidade) < 0) { return(BadRequest($"Não será permitido realizar a venda. O produto {produtoFinal.Nome} está com estoque indisponível")); } } if (venda.Valor != totalVenda) { return(BadRequest("Não será permitido realizar a venda. O Valor da venda está incorreto.")); } var caixa = _caixaRepositorio.Selecionar(venda.Caixa.Id); if (!caixa.EstaAberto()) { return(BadRequest("Não será permitido realizar a venda se o caixa estiver fechado")); } venda.Caixa = caixa; foreach (var item in venda.Itens) { ProdutoFinal produtoFinal = (ProdutoFinal)_produtoRepositorio.Selecionar(item.IdProdutoFinal); Estoque estoque = new Estoque() { Produto = produtoFinal, Data = DateTime.Now, Quantidade = item.Quantidade, TipoEstoque = EnumTipoEstoque.SAIDA }; _estoqueRepositorio.Incluir(estoque); produtoFinal.QuantidadeEstoque -= estoque.Quantidade; _produtoRepositorio.Alterar(produtoFinal); } _vendaRepositorio.Incluir(venda); VendaDTO vendaRetorno = new VendaDTO(); vendaRetorno.Mensagem = "Venda efetuada com sucesso"; vendaRetorno.ValorPago = venda.Valor; if (venda.TipoPagamento == EnumTipoPagamento.DINHEIRO) { vendaRetorno.Troco = venda.ValorRecebido - venda.Valor; } return(Ok(vendaRetorno)); } catch (Exception e) { return(StatusCode(StatusCodes.Status500InternalServerError)); } }
/// <summary> /// /// </summary> /// <param name="Produto"></param> public void Alterar(Produto Produto) { _ProdutoRepositorio.Alterar(Produto); }
public Produto Alterar(string id, Produto produto) { _repositorio.Alterar(id, produto); _repositorio.Commit(); return(ObterPorId(id)); }