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 Pagamento ObterPagamentoCliente(long idPagamento)
 {
     return(PagamentoRepositorio.Buscar(idPagamento));
 }
Beispiel #3
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));
        }