public void GeraPagamentoTorneioCliente(long idCliente) { var torneiosCliente = ObterItensTorneioModel(TorneioClienteRepositorio.ObterTorneioClientePendente(idCliente)); Pagamento pagamento = null; //quita se valor for igual if (torneiosCliente.Sum(d => d.ValorTotal) == torneiosCliente.Sum(d => d.ValorPago)) { pagamento = new Pagamento { Data = DateTime.Now, IdCliente = idCliente, ValorAberto = 0, ValorTotal = torneiosCliente.Sum(d => d.ValorTotal), Situacao = SituacaoVenda.Pago }; } //deixa pendente valor faltante else if (torneiosCliente.Sum(d => d.ValorTotal) > torneiosCliente.Sum(d => d.ValorPago)) { pagamento = new Pagamento { Data = DateTime.Now, IdCliente = idCliente, ValorAberto = torneiosCliente.Sum(d => d.ValorTotal) - torneiosCliente.Sum(d => d.ValorPago ?? 0), ValorTotal = torneiosCliente.Sum(d => d.ValorTotal), Situacao = SituacaoVenda.Pendente }; } //deixa como saldo valor superior else if (torneiosCliente.Sum(d => d.ValorTotal) < torneiosCliente.Sum(d => d.ValorPago)) { pagamento = new Pagamento { Data = DateTime.Now, IdCliente = idCliente, ValorAberto = 0, ValorTotal = torneiosCliente.Sum(d => d.ValorTotal), Situacao = SituacaoVenda.Pago }; AtualizaSaldoCliente(idCliente, torneiosCliente.Sum(d => d.ValorPago ?? 0) - torneiosCliente.Sum(d => d.ValorTotal)); } if (pagamento != null) { var parcela = new ParcelamentoPagamento { DataPagamento = pagamento.Data, IdCliente = pagamento.IdCliente, Pagamento = pagamento, TipoFinalizador = TipoFinalizador.Dinheiro, ValorPago = pagamento.ValorTotal - pagamento.ValorAberto }; ParcelamentoPagamentoRepositorio.Cadastrar(parcela); } PagamentoRepositorio.Cadastrar(pagamento); AtualizaPendencias(new PendenciasCliente { TorneiosCliente = torneiosCliente, IdCliente = idCliente }, pagamento); }
public PendenciasCliente ObterPendenciaCliente(long idCliente) { var pendencias = new PendenciasCliente { CashGames = CashGameRepositorio.ObterCashGamesPendente(idCliente), TorneiosCliente = ObterItensTorneioModel(TorneioClienteRepositorio.ObterTorneioClientePendente(idCliente)), Vendas = VendaRepositorio.ObterVendaModelPendente(idCliente), Pagamentos = PagamentoRepositorio.ObterPagamentosPendentes(idCliente) }; pendencias.IdCliente = idCliente; var cliente = ClienteRepositorio.Filtrar(d => d.Id == idCliente).Select(d => new { Nome = d.Nome, Saldo = d.Saldo }).FirstOrDefault(); pendencias.NomeCliente = cliente.Nome; pendencias.Saldo = cliente.Saldo; pendencias.ValorTotal = pendencias.CashGames.Sum(d => d.Valor); pendencias.ValorTotal += pendencias.TorneiosCliente.Sum(d => d.ValorTotal - (d.ValorPago ?? 0)); pendencias.ValorTotal += pendencias.Vendas.Sum(d => d.Valor); return(pendencias); }