public void AtualizarCompra(Compra compra) { compra.Validar(); compra.ItensCompra.ForEach(x => x.Validar()); AssertionConcern.AssertArgumentNotEquals(0, compra.CompraCodigo, string.Format(Erros.NotZeroParameter, "CompraCodigo")); var compraAtual = _compraRepository.ObterPorCodigoComItensCompra(compra.CompraCodigo); if (compra.StatusCompra == StatusCompraEnum.Aberto) { AplicaValidacoesPadrao(compra); AdicionaFornecedorFormaECondicaoDePagamento(compra, compraAtual); AtualizaItensCompra(compraAtual, compra.ItensCompra); compraAtual.StatusCompra = StatusCompraEnum.Confirmado; AdicionaContaPagarNaCompra(compraAtual); compraAtual.ContasPagar.ForEach(x => x.Validar()); AdicionarNoEstoque(compra.ItensCompra, compra); } else { compraAtual.StatusCompra = StatusCompraEnum.Cancelado; RemoveContaPagarDaCompra(compraAtual); AtualizarDoEstoque(compraAtual.ItensCompra); } _compraRepository.Atualizar(compraAtual); }
public void CriarCompra(Compra compra) { compra.Validar(); compra.ItensCompra.ForEach(x => x.Validar()); AssertionConcern.AssertArgumentEquals(compra.StatusCompra, StatusCompraEnum.Aberto, Erros.StatusOfDifferentPurchasingOpen); AplicaValidacoesPadrao(compra); var usuario = _usuarioRepository.ObterPorCodigo(compra.Usuario.UsuarioCodigo); compra.Usuario = usuario; compra.Fornecedor = null; compra.FormaPagamento = null; compra.CondicaoPagamento = null; _compraRepository.Criar(compra); }