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(""); }
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 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); }
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; } }
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); }
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); }
public PagamentosController() { _pagamentosRepositorio = new PagamentoRepositorio(); }
public Pagamento ObterPagamentoCliente(long idPagamento) { return(PagamentoRepositorio.Buscar(idPagamento)); }
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)); }