public void AdicionarProduto(Produto produto, decimal desconto, decimal acrescimo, int quantidade) { if (Status != VendaStatusEnum.Aberta) { AddDomainError("A venda já foi finalizada. Não é possível adicionar mais itens agora."); return; } if (produto.Estoque < quantidade) { AddDomainError("O estoque não tem essa quantidade disponível."); return; } VendaProduto vendaProduto = new VendaProduto(this, produto, desconto, acrescimo, quantidade); if (!_produtos.Contains(vendaProduto)) { if (!produto.DeduzirEstoque(quantidade)) { AddDomainError("Erro ao deduzir do estoque."); return; } _produtos.Add(vendaProduto); QuantidadeItens += vendaProduto.Quantidade; TotalVenda += vendaProduto.PrecoFinal; } else { AddDomainError("O produto já foi adicionado à venda."); } }
public void RemoverProduto(Produto produto) { if (Status != VendaStatusEnum.Aberta) { AddDomainError("A venda já foi finalizada. Não foi possível remover esse item."); return; } VendaProduto vendaProduto = _produtos.Find(c => c.Equals(new VendaProduto(this, produto))); if (_produtos.Contains(vendaProduto)) { _produtos.Remove(vendaProduto); QuantidadeItens -= vendaProduto.Quantidade; TotalVenda -= vendaProduto.PrecoFinal; produto.ReporEstoque(vendaProduto.Quantidade); } else { AddDomainError("O produto ainda não foi adicionado à venda."); } }