public virtual IActionResult Cancelar([FromRoute] VendaId id, [FromBody] CancelarVenda cancelarVenda) { cancelarVenda.Numero = id.Numero; cancelarVenda.Modelo = id.Modelo; cancelarVenda.Serie = id.Serie; this.VendaService.Cancelar(cancelarVenda); return(Ok()); }
//Cancelar //Se uma parcela ja for dado baixa n pode, precisa cancelar a baixa //Cancelar compra, deve voltar o valor original do produto public void Cancelar(CancelarVenda cancelarVenda) { var result = this.UserDAO.PasswordSignIn(this.UserRequest.UserNome, cancelarVenda.Senha); if (!result.Succeeded) { throw new BusinessException(new { Senha = "Senha inválido" }); } var id = new VendaId() { Modelo = cancelarVenda.Modelo, Serie = cancelarVenda.Serie, Numero = cancelarVenda.Numero }; var venda = this.GetByID(id); var dataCancelamento = DateTime.Now; foreach (var parcela in venda.Parcelas) { if (parcela.DataBaixa != null) { throw new BusinessException(new { Numero = "Compra já possuir uma conta a pagar baixada." }); } parcela.DataCancelamento = dataCancelamento; parcela.UserCancelamento = UserRequest.Id.ToString(); parcela.JustificativaCancelamento = cancelarVenda.Justificativa; this.ContaReceberService.Update(parcela, false); } foreach (var produto in venda.Produtos) { var produtoDb = this.ProdutoDAO.GetByID(produto.ProdutoId); produtoDb.Quantidade += produto.Quantidade; this.ProdutoDAO.Update(produtoDb, false); } venda.DataCancelamento = dataCancelamento; venda.UserCancelamento = UserRequest.Id.ToString(); venda.JustificativaCancelamento = cancelarVenda.Justificativa; this.VendaDAO.Update(venda); }