public void AtualizarVenda(Venda venda) { venda.Validar(); venda.ItensVenda.ForEach(x => x.Validar()); AssertionConcern.AssertArgumentNotEquals(0, venda.VendaCodigo, string.Format(Erros.NotZeroParameter, "VendaCodigo")); VerificarEstoque(venda.ItensVenda); var vendaAtual = _vendaRepository.ObterPorCodigoComItensVenda(venda.VendaCodigo); if (venda.StatusVenda == StatusVendaEnum.Aberto) { AplicaValidacoesPadrao(venda); AdicionaClienteFormaECondicaoDePagamento(venda, vendaAtual); AtualizaItensVenda(vendaAtual, venda.ItensVenda); vendaAtual.StatusVenda = StatusVendaEnum.Confirmado; AdicionaContaReceberNaVenda(vendaAtual); vendaAtual.ContasReceber.ForEach(x => x.Validar()); BaixarDoEstoque(vendaAtual.ItensVenda); } else { vendaAtual.StatusVenda = StatusVendaEnum.Cancelado; RemoveContaReceberDaVenda(vendaAtual); DevolverNoEstoque(vendaAtual.ItensVenda); } _vendaRepository.Atualizar(vendaAtual); }
public void CriarVenda(Venda venda) { venda.Validar(); venda.ItensVenda.ForEach(x => x.Validar()); AssertionConcern.AssertArgumentEquals(venda.StatusVenda, StatusVendaEnum.Aberto, Erros.StatusOfDifferentSalesOpen); AplicaValidacoesPadrao(venda); var usuario = _usuarioRepository.ObterPorCodigo(venda.Usuario.UsuarioCodigo); venda.Usuario = usuario; venda.Cliente = null; venda.FormaPagamento = null; venda.CondicaoPagamento = null; _vendaRepository.Criar(venda); }
private void RemoveContaReceberDaVenda(Venda venda) { var contasReceber = _contaReceberRepository.ObterListaPorCodigoVenda(venda.VendaCodigo); contasReceber.ForEach(x => { _contaReceberRepository.Deletar(x); }); }
private void AdicionaClienteFormaECondicaoDePagamento(Venda venda, Venda vendaAtual) { AssertionConcern.AssertArgumentNotEquals(0, venda.Cliente.PessoaCodigo, Erros.ClientNotSet); AssertionConcern.AssertArgumentNotEquals(0, venda.FormaPagamento.FormaPagamentoCodigo, Erros.NotSetPayment); AssertionConcern.AssertArgumentNotEquals(0, venda.CondicaoPagamento.CondicaoPagamentoCodigo, Erros.PaymentConditionNotSet); var cliente = _pessoaRepository.ObterPorCodigo(venda.Cliente.PessoaCodigo); var formaPagamento = _formaPagamentoRepository.ObterPorCodigo(venda.FormaPagamento.FormaPagamentoCodigo); var condicaoPagamento = _condicaoPagamentoRepository.ObterPorCodigo(venda.CondicaoPagamento.CondicaoPagamentoCodigo); vendaAtual.Cliente = cliente; vendaAtual.FormaPagamento = formaPagamento; vendaAtual.CondicaoPagamento = condicaoPagamento; }
private void AtualizaItensVenda(Venda vendaAtual, IEnumerable<ItemVenda> itensVenda) { var itensVendaAtual = vendaAtual.ItensVenda.ToList(); itensVendaAtual.ForEach(x => { _itemVendaRepository.Deletar(x); }); vendaAtual.ItensVenda.Clear(); itensVenda.ForEach(x => { x.Venda = vendaAtual; var novoItem = _itemVendaRepository.Criar(x); vendaAtual.ItensVenda.Add(novoItem); }); }
private static void AplicaValidacoesPadrao(Venda venda) { AssertionConcern.AssertArgumentEquals(venda.ItensVenda.Sum(x => x.ValorBruto), venda.ValorTotalBruto, Erros.SumDoNotMatchTotalCrudeValue); AssertionConcern.AssertArgumentEquals(venda.ItensVenda.Sum(x => x.ValorDesconto), venda.ValorTotalDesconto, Erros.SumDoNotMatchTotalValueDiscount); AssertionConcern.AssertArgumentEquals(venda.ItensVenda.Sum(x => x.ValorLiquido), venda.ValorTotalLiquido, Erros.SumDoNotMatchTotalValueLiquid); }
private static void AdicionaContaReceberNaVenda(Venda venda) { venda.ContasReceber = new List<ContaReceber>(); for (var i = 0; i < venda.CondicaoPagamento.QuantidadeParcelas; i++) { venda.ContasReceber.Add(new ContaReceber { DataVencimento = DateTime.Now.AddDays(1).AddMonths(i), Recebido = false, StatusContaReceber = StatusContaReceberEnum.Aberto, ValorDocumento = venda.ValorTotalLiquido / venda.CondicaoPagamento.QuantidadeParcelas, Venda = venda }); } }
public void Deletar(Venda venda) { _context.Vendas.Remove(venda); _context.SaveChanges(); }
public void Criar(Venda venda) { _context.Vendas.Add(venda); _context.SaveChanges(); }
public void Atualizar(Venda venda) { _context.Entry(venda).State = System.Data.Entity.EntityState.Modified; _context.SaveChanges(); }