Beispiel #1
0
        public string ValidaPagamento(ParcelamentoPagamento parcelamentoPagamento)
        {
            var pagamento = PagamentoRepositorio.Buscar(parcelamentoPagamento.IdPagamento ?? 0);

            if (parcelamentoPagamento.TipoFinalizador == TipoFinalizador.Cortesia && parcelamentoPagamento.ValorPago > 0)
            {
                return("Favor retirar valor preenchido se for uma cortesia!");
            }
            if (pagamento != null && pagamento.Situacao == SituacaoVenda.Pendente && parcelamentoPagamento.TipoFinalizador == TipoFinalizador.Conta)
            {
                return("Venda já está em aberto na conta do cliente");
            }
            if (!new[] { TipoFinalizador.Saldo, TipoFinalizador.Cortesia, TipoFinalizador.Conta }.Contains(parcelamentoPagamento.TipoFinalizador) && parcelamentoPagamento.ValorPago /*+ parcelamentoPagamento.Saldo*/ == 0)
            {
                return("Favor preencher o valor a ser pago");
            }
            if (parcelamentoPagamento.TipoFinalizador == TipoFinalizador.Saldo && parcelamentoPagamento.Saldo <= 0)
            {
                return("Cliente não possue saldo!");
            }
            if (parcelamentoPagamento.TipoFinalizador == TipoFinalizador.Conta && parcelamentoPagamento.ValorPago > 0)
            {
                return("Favor retirar valor preenchido se for colocar na conta do cliente!");
            }


            return("");
        }
Beispiel #2
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);
        }
Beispiel #3
0
        public PaginacaoModel <Pagamento, FiltroPagamento> FiltrarComprovante
            (PaginacaoModel <Pagamento, FiltroPagamento> paginacao)
        {
            if (paginacao.Filtro == null)
            {
                paginacao.Filtro = new FiltroPagamento(paginacao.Parametro1, paginacao.Parametro13, paginacao.Parametro4, paginacao.ParameterBool);
            }
            else
            {
                paginacao.Parametro1    = paginacao.Filtro.NomeCliente;
                paginacao.Parametro13   = paginacao.Filtro.ApelidoCliente;
                paginacao.Parametro4    = paginacao.Filtro.DataPagamento;
                paginacao.ParameterBool = paginacao.Filtro.Tudo;
            }
            var query = PagamentoRepositorio.Query().Where(d => d.ValorTotal != 0 && d.Situacao != Dominio.Enumeradores.SituacaoVenda.Pendente);

            if (paginacao.Filtro.NomeCliente.TemValor())
            {
                query = query.Where(d => d.Cliente.Nome.Contains(paginacao.Filtro.NomeCliente));
            }
            if (!paginacao?.Filtro?.Tudo ?? true)
            {
                if (paginacao.Filtro.DataPagamento.HasValue)
                {
                    query = query.Where(d => DbFunctions.TruncateTime(d.Data) == paginacao.Filtro.DataPagamento);
                }
                else
                {
                    var dataCaixaAtivo = CaixaAplicacao.ObterDataCaixaAtivo();
                    query = query.Where(d => d.Data >= dataCaixaAtivo);
                }
            }
            if (paginacao.Filtro.ApelidoCliente.TemValor())
            {
                query = query.Where(d => d.Cliente.Apelido.Contains(paginacao.Filtro.ApelidoCliente));
            }

            paginacao.ListaModel = query.OrderBy(d => d.Id).Skip(((paginacao.Pagina - 1) * 10)).Take(10).ToList();
            paginacao.QtdPaginas = query.Count().CalculaQtdPaginas().TransformaEmLista();
            return(paginacao);
        }
Beispiel #4
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);
        }
 private void GeraPagamentoCashGame(CashGame entidade)
 {
     if (entidade.Situacao == SituacaoVenda.Pago)
     {
         ParcelamentoPagamento parcelamentoPagamento = new ParcelamentoPagamento();
         parcelamentoPagamento.DataPagamento   = DateTime.Now;
         parcelamentoPagamento.IdCliente       = entidade.IdCliente;
         parcelamentoPagamento.TipoFinalizador = entidade.TipoFinalizador ?? TipoFinalizador.Dinheiro;
         parcelamentoPagamento.ValorPago       = entidade.Valor;
         var pagamento = new Pagamento
         {
             IdCliente   = entidade.IdCliente,
             Data        = DateTime.Now,
             Situacao    = SituacaoVenda.Pago,
             ValorAberto = 0,
             ValorTotal  = entidade.Valor
         };
         parcelamentoPagamento.Pagamento = pagamento;
         PagamentoRepositorio.Cadastrar(pagamento);
         ParcelamentoPagamentoRepositorio.Cadastrar(parcelamentoPagamento);
         entidade.Pagamento = pagamento;
     }
 }
Beispiel #6
0
        public PendenciasCliente ObterDetalhesPagamento(long idPagamento)
        {
            var detalhesPagamento = new PendenciasCliente();

            detalhesPagamento.CashGames       = CashGameRepositorio.Filtrar(d => d.IdComprovantePagamento == idPagamento).ToList();
            detalhesPagamento.TorneiosCliente = PagamentosAplicacao.ObterItensTorneioModel(TorneiosClienteRepositorio.Filtrar(d => d.IdComprovantePagamento == idPagamento).ToList());
            var idNomeCliente = PagamentoRepositorio.Filtrar(d => d.Id == idPagamento).Select(d => new { Nome = d.Cliente.Nome, Id = d.IdCliente, Saldo = d.Cliente.Saldo }).FirstOrDefault();

            detalhesPagamento.IdCliente   = idNomeCliente.Id;
            detalhesPagamento.NomeCliente = idNomeCliente.Nome;
            detalhesPagamento.Saldo       = idNomeCliente.Saldo;
            var vendas = VendaRepositorio.Filtrar(d => d.IdComprovantePagamento == idPagamento).ToList();

            detalhesPagamento.Vendas        = new List <VendaModel>();
            detalhesPagamento.Parcelamentos = ParcelamentoPagamentoRepositorio.Filtrar(d => d.IdPagamento == idPagamento).ToList();
            //if (detalhesPagamento.Parcelamentos.Count() == 1)
            //    detalhesPagamento.Parcelamentos = new List<ParcelamentoPagamento>();
            foreach (var venda in vendas)
            {
                detalhesPagamento.Vendas.Add(new VendaModel(venda, PreVendaRepositorio));
            }
            return(detalhesPagamento);
        }
Beispiel #7
0
        private string GeraPagamentoVenda(FinalizacaoVendaModel finalizacaoVendaModel, Venda venda)
        {
            if (finalizacaoVendaModel.ValorPago > 0 && finalizacaoVendaModel.TipoFinalizador == TipoFinalizador.Cortesia)
            {
                return("Favor não colocar valor pago em uma cortesia!");
            }

            Pagamento pagamento = null;

            if (finalizacaoVendaModel.TipoFinalizador == TipoFinalizador.Saldo)
            {
                var valorTotalPago = (finalizacaoVendaModel.ValorPago ?? 0) + venda.Cliente.Saldo;
                pagamento = new Pagamento
                {
                    Data        = DateTime.Now,
                    IdCliente   = venda.IdCliente,
                    ValorAberto = 0,
                    ValorTotal  = venda.Valor,
                    Situacao    = SituacaoVenda.Pago
                };
                //if (finalizacaoVendaModel.TrocoSaldo ?? false)
                //    venda.Cliente.Saldo = valorTotalPago - venda.Valor;
                //else
                //    venda.Cliente.Saldo = 0;
            }
            else if (venda.Valor > ((finalizacaoVendaModel?.ValorPago ?? 0) + (venda?.Cliente?.Saldo ?? 0)) && finalizacaoVendaModel.ValorPago > 0)
            {
                pagamento = new Pagamento
                {
                    Data        = DateTime.Now,
                    IdCliente   = venda.IdCliente,
                    ValorAberto = (double)(venda.Valor - finalizacaoVendaModel.ValorPago),
                    ValorTotal  = venda.Valor,
                    Situacao    = SituacaoVenda.Pendente
                };
            }
            else if (((finalizacaoVendaModel?.ValorPago ?? 0) + (venda?.Cliente?.Saldo ?? 0)) > venda.Valor && (finalizacaoVendaModel.TrocoSaldo ?? false))
            {
                pagamento = new Pagamento
                {
                    Data        = DateTime.Now,
                    IdCliente   = venda.IdCliente,
                    ValorAberto = 0,
                    ValorTotal  = venda.Valor,
                    Situacao    = SituacaoVenda.Pago
                };
                //if (finalizacaoVendaModel.TipoFinalizador != TipoFinalizador.Cortesia)
                //    venda.Cliente.Saldo += (finalizacaoVendaModel.ValorPago - venda.Valor);
            }
            else if (finalizacaoVendaModel.TipoFinalizador == TipoFinalizador.Cortesia)
            {
                pagamento = new Pagamento
                {
                    Data        = DateTime.Now,
                    Cliente     = venda.Cliente,
                    ValorAberto = 0,
                    ValorTotal  = venda.Valor,
                    Situacao    = SituacaoVenda.Pago,
                };
            }
            else if (finalizacaoVendaModel.ValorPago > 0)
            {
                pagamento = new Pagamento
                {
                    Data        = DateTime.Now,
                    Cliente     = venda.Cliente,
                    ValorAberto = 0,
                    ValorTotal  = venda.Valor,
                    Situacao    = SituacaoVenda.Pago,
                };
            }
            if (pagamento != null)
            {
                ParcelamentoPagamento parcelamentoPagamento = new ParcelamentoPagamento
                {
                    Pagamento       = pagamento,
                    TipoFinalizador = finalizacaoVendaModel.TipoFinalizador ?? TipoFinalizador.Dinheiro,
                    DataPagamento   = pagamento.Data,
                    IdCliente       = venda.IdCliente,
                    ValorPago       = pagamento.ValorTotal,
                };
                if (pagamento.ValorAberto > 0)
                {
                    parcelamentoPagamento.ValorPago = finalizacaoVendaModel.ValorPago ?? 0;
                }

                if (((finalizacaoVendaModel?.ValorPago ?? 0) + (venda?.Cliente?.Saldo ?? 0)) == venda.Valor || !(finalizacaoVendaModel?.TrocoSaldo ?? false))
                {
                    if (finalizacaoVendaModel.TipoFinalizador != TipoFinalizador.Cortesia)
                    {
                        venda.Cliente.Saldo = 0;
                    }
                }
                else
                {
                    venda.Cliente.Saldo = ((finalizacaoVendaModel?.ValorPago ?? 0) + (venda?.Cliente?.Saldo ?? 0)) - venda.Valor;
                }

                PagamentoRepositorio.Cadastrar(pagamento);
                ParcelamentoPagamentoRepositorio.Cadastrar(parcelamentoPagamento);
                venda.Pagamento = pagamento;
                venda.Situacao  = SituacaoVenda.Pago;
            }
            return("");
        }
 private PagamentoServices(ISqlBase sqlBase, IsolationLevel isolationLevel) : base(sqlBase, isolationLevel)
 {
     this.Repositorio = PagamentoRepositorio.Create(this.optionsBuilder.Options, isolationLevel);
 }
Beispiel #9
0
 public PagamentosController()
 {
     _pagamentosRepositorio = new PagamentoRepositorio();
 }
Beispiel #10
0
 public Pagamento ObterPagamentoCliente(long idPagamento)
 {
     return(PagamentoRepositorio.Buscar(idPagamento));
 }
Beispiel #11
0
        public PendenciasCliente GerarPagamento(ParcelamentoPagamento parcelamentoPagamento)
        {
            parcelamentoPagamento.ValorPago += (parcelamentoPagamento.Saldo ?? 0);
            Pagamento pagamento = null;

            if (parcelamentoPagamento.IdPagamento != null)
            {
                pagamento = PagamentoRepositorio.Buscar((long)parcelamentoPagamento.IdPagamento);
                if (pagamento.ValorAberto - parcelamentoPagamento.ValorPago <= 0)
                {
                    //pagamento.ValorAberto = 0;
                    pagamento.Situacao = Dominio.Enumeradores.SituacaoVenda.Pago;
                    pagamento.Data     = DateTime.Now;
                }
                else
                {
                    pagamento.ValorAberto = pagamento.ValorAberto - parcelamentoPagamento.ValorPago;
                    pagamento.Situacao    = Dominio.Enumeradores.SituacaoVenda.Pendente;
                }
                if (parcelamentoPagamento.TrocoSaldo ?? false)
                {
                    parcelamentoPagamento.Saldo = parcelamentoPagamento.ValorPago - pagamento.ValorAberto;
                }

                AtualizaSaldoCliente(pagamento.IdCliente, parcelamentoPagamento.TrocoSaldo, parcelamentoPagamento.Saldo, pagamento);
                PagamentoRepositorio.Atualizar(pagamento);
                GerarParcelamentoPagamento(parcelamentoPagamento, pagamento);
                var result = Contexto.Salvar();
            }
            else
            {
                pagamento = new Pagamento
                {
                    Data      = DateTime.Now,
                    IdCliente = (long)parcelamentoPagamento.IdCliente
                };

                var pendencias = ObterPendenciaCliente((long)parcelamentoPagamento.IdCliente);
                if (pendencias != null)
                {
                    string troco       = "";
                    var    valorAntigo = pendencias.ValorTotal;
                    pagamento.ValorTotal = pendencias.ValorTotal + pendencias.TorneiosCliente.Sum(d => d.ValorPago ?? 0);
                    if ((valorAntigo - parcelamentoPagamento.ValorPago) <= 0 || parcelamentoPagamento.TipoFinalizador == TipoFinalizador.Cortesia)
                    {
                        //pagamento.ValorAberto = 0;
                        pagamento.Situacao = Dominio.Enumeradores.SituacaoVenda.Pago;
                        if (parcelamentoPagamento.ValorPago > 0)
                        {
                            troco = (valorAntigo - parcelamentoPagamento.ValorPago).ToString("C2");
                        }
                    }
                    else
                    {
                        pagamento.ValorAberto = pendencias.ValorTotal - parcelamentoPagamento.ValorPago;
                        pagamento.Situacao    = Dominio.Enumeradores.SituacaoVenda.Pendente;
                    }
                    if (pendencias.TorneiosCliente.Sum(d => d.ValorPago) > 0)
                    {
                        foreach (var torneioCliente in pendencias.TorneiosCliente)
                        {
                            var parcela = new ParcelamentoPagamento();
                            parcela.DataPagamento   = torneioCliente.DataAlteracao ?? torneioCliente.DataCadastro;
                            parcela.Pagamento       = pagamento;
                            parcela.TipoFinalizador = TipoFinalizador.Dinheiro;
                            parcela.ValorPago       = torneioCliente.ValorPago ?? 0;
                            ParcelamentoPagamentoRepositorio.Cadastrar(parcela);
                        }
                    }
                    if (parcelamentoPagamento.ValorPago - valorAntigo > 0)
                    {
                        parcelamentoPagamento.Saldo = parcelamentoPagamento.ValorPago - valorAntigo;
                    }
                    AtualizaSaldoCliente(pagamento.IdCliente, parcelamentoPagamento.TrocoSaldo, parcelamentoPagamento.Saldo, pagamento);
                    PagamentoRepositorio.Cadastrar(pagamento);
                    GerarParcelamentoPagamento(parcelamentoPagamento, pagamento);
                    AtualizaPendencias(pendencias, pagamento);
                    Contexto.Salvar();
                }
            }
            return(ObterPendenciaCliente((long)parcelamentoPagamento.IdCliente));
        }