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 Deletar(Compra compra) { _context.Compras.Remove(compra); _context.SaveChanges(); }
public void Criar(Compra compra) { _context.Compras.Add(compra); _context.SaveChanges(); }
public void Atualizar(Compra compra) { _context.Entry(compra).State = System.Data.Entity.EntityState.Modified; _context.SaveChanges(); }
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); }
private void RemoveContaPagarDaCompra(Compra compra) { var contasReceber = _contaPagarRepository.ObterListaPorCodigoCompra(compra.CompraCodigo); contasReceber.ForEach(x => { _contaPagarRepository.Deletar(x); }); }
private void AtualizaItensCompra(Compra compraAtual, IEnumerable<ItemCompra> itensCompra) { var itensCompraAtual = compraAtual.ItensCompra.ToList(); itensCompraAtual.ForEach(x => { _itemCompraRepository.Deletar(x); }); compraAtual.ItensCompra.Clear(); itensCompra.ForEach(x => { x.Compra = compraAtual; var novoItem = _itemCompraRepository.Criar(x); compraAtual.ItensCompra.Add(novoItem); }); }
private void AdicionarNoEstoque(IEnumerable<ItemCompra> itensCompra, Compra compra) { itensCompra.ForEach(x => { var estoqueAtual = _estoqueRepository.ObterPorCodigoProduto(x.ProdutoCodigo); if (estoqueAtual != null) { estoqueAtual.Compra = _compraRepository.ObterPorCodigo(compra.CompraCodigo); estoqueAtual.DataUltimaEntrada = DateTime.Now; estoqueAtual.Quantidade += x.Quantidade; _estoqueRepository.Atualizar(estoqueAtual); } else { _estoqueRepository.Criar(new Estoque { DataUltimaEntrada = DateTime.Now, Compra = _compraRepository.ObterPorCodigo(compra.CompraCodigo), Produto = _produtoRepository.ObterPorCodigo(x.ProdutoCodigo), Quantidade = x.Quantidade }); } }); }
private void AdicionaFornecedorFormaECondicaoDePagamento(Compra compra, Compra compraAtual) { AssertionConcern.AssertArgumentNotEquals(0, compra.Fornecedor.PessoaCodigo, Erros.ProviderNotSet); AssertionConcern.AssertArgumentNotEquals(0, compra.FormaPagamento.FormaPagamentoCodigo, Erros.NotSetPayment); AssertionConcern.AssertArgumentNotEquals(0, compra.CondicaoPagamento.CondicaoPagamentoCodigo, Erros.PaymentConditionNotSet); var fornecedor = _pessoaRepository.ObterPorCodigo(compra.Fornecedor.PessoaCodigo); var formaPagamento = _formaPagamentoRepository.ObterPorCodigo(compra.FormaPagamento.FormaPagamentoCodigo); var condicaoPagamento = _condicaoPagamentoRepository.ObterPorCodigo(compra.CondicaoPagamento.CondicaoPagamentoCodigo); compraAtual.Fornecedor = fornecedor; compraAtual.FormaPagamento = formaPagamento; compraAtual.CondicaoPagamento = condicaoPagamento; }
private static void AplicaValidacoesPadrao(Compra compra) { AssertionConcern.AssertArgumentEquals(compra.ItensCompra.Sum(x => x.ValorBruto), compra.ValorTotalBruto, Erros.SumDoNotMatchTotalCrudeValue); var valorTotalLiquidoSemFrete = compra.ItensCompra.Sum(x => x.ValorLiquido); var valorTotalLiquidoComFrete = valorTotalLiquidoSemFrete + compra.ValorTotalFrete; AssertionConcern.AssertArgumentEquals(valorTotalLiquidoComFrete, compra.ValorTotalLiquido, Erros.SumDoNotMatchTotalValueLiquid); }
private static void AdicionaContaPagarNaCompra(Compra compra) { compra.ContasPagar = new List<ContaPagar>(); for (var i = 0; i < compra.CondicaoPagamento.QuantidadeParcelas; i++) { compra.ContasPagar.Add(new ContaPagar { DataVencimento = DateTime.Now.AddDays(1).AddMonths(i), Pago = false, StatusContaPagar = StatusContaPagarEnum.Aberto, ValorDocumento = compra.ValorTotalLiquido / compra.CondicaoPagamento.QuantidadeParcelas, Compra = compra }); } }