コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }