Beispiel #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);
        }
 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 #3
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("");
        }
Beispiel #4
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));
        }