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 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)); }