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 void GerarParcelamentoPagamento(ParcelamentoPagamento parcelamentoPagamento, Pagamento pagamento) { parcelamentoPagamento.DataPagamento = DateTime.Now; parcelamentoPagamento.Pagamento = pagamento; //if (parcelamentoPagamento.ValorPago > pagamento.ValorAberto) //{ // parcelamentoPagamento.ValorPago = pagamento.ValorAberto; // pagamento.ValorAberto = 0; //} if (parcelamentoPagamento.TipoFinalizador == TipoFinalizador.Cortesia) { parcelamentoPagamento.ValorPago = pagamento.ValorTotal; } ParcelamentoPagamentoRepositorio.Cadastrar(parcelamentoPagamento); }
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; } }
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(""); }
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)); }