/// <summary> /// /// </summary> private List <MembroSaldo> carregarSaldos(List <Movimento> listaMovimentos) { var idsDestinos = listaMovimentos.Select(x => x.idMembroDestino.toInt()) .Where(x => x > 0) .ToList(); var listaSaldos = SaldoConsultaBL.query(0, 1) .Where(x => idsDestinos.Contains(x.idMembro)) .Select(x => new { x.id, x.idMembro, x.saldoAtual }) .ToListJsonObject <MembroSaldo>(); var idsSemSaldo = idsDestinos.Except(listaSaldos.Select(x => x.idMembro).ToList()); var listaSemSaldo = listaMovimentos.Where(x => idsSemSaldo.Contains(x.idMembroDestino.toInt())) .DistinctBy(x => x.idMembroDestino) .ToList(); foreach (var Membro in listaSemSaldo) { var NovoSaldo = new MembroSaldo(); NovoSaldo.idMembro = Membro.idMembroDestino.toInt(); NovoSaldo.idPessoa = Membro.idPessoaDestino.toInt(); NovoSaldo.saldoAtual = new decimal(0); this.SaldoCadastroBL.salvar(NovoSaldo); listaSaldos.Add(NovoSaldo); } return(listaSaldos); }
//Persistir o objecto e salvar na base de dados private bool inserir(MembroSaldo OMembroSaldo) { OMembroSaldo.setDefaultInsertValues(); db.MembroSaldo.Add(OMembroSaldo); db.SaveChanges(); return(OMembroSaldo.id > 0); }
/// <summary> /// /// </summary> public UtilRetorno atualizar(List <Movimento> listaMovimentos) { listaMovimentos = listaMovimentos.Where(x => x.idMembroDestino > 0).ToList(); var idsDestino = listaMovimentos.Select(x => x.idMembroDestino).ToList(); var listaSaldos = this.carregarSaldos(listaMovimentos); var listaAtualizacao = new List <MembroSaldo>(); foreach (var idDestino in idsDestino) { var OSaldo = listaSaldos.FirstOrDefault(x => x.idMembro == idDestino) ?? new MembroSaldo(); var valorCreditos = listaMovimentos.Where(x => x.idMembroDestino == idDestino && x.flagCredito == true) .Select(x => x.valor) .DefaultIfEmpty(0) .Sum(); var valorDebitos = listaMovimentos.Where(x => x.idMembroDestino == idDestino && x.flagDebito == true) .Select(x => x.valor) .DefaultIfEmpty(0) .Sum(); decimal valorNovoSaldo = decimal.Add(OSaldo.saldoAtual, valorCreditos.toDecimal()); valorNovoSaldo = decimal.Subtract(valorNovoSaldo, valorDebitos.toDecimal()); var SaldoAtualizado = new MembroSaldo(); SaldoAtualizado.id = OSaldo.id; SaldoAtualizado.idMembro = OSaldo.idMembro; SaldoAtualizado.saldoAtual = valorNovoSaldo; listaAtualizacao.Add(SaldoAtualizado); } var Retorno = this.salvarSaldos(listaAtualizacao); if (Retorno.flagError) { return(Retorno); } this.salvarMovimentos(listaMovimentos); return(Retorno); }
/// <summary> /// Verificar se deve-se atualizar um registro existente ou criar um novo /// </summary> public bool salvar(MembroSaldo OMembroSaldo) { if (OMembroSaldo.idPessoa.toInt() == 0) { OMembroSaldo.idPessoa = null; } if (OMembroSaldo.id == 0) { return(this.inserir(OMembroSaldo)); } return(this.atualizar(OMembroSaldo)); }
/// <summary> /// /// </summary> private void inserir(int[] idsMembros) { var listaMembros = db.Associado.Where(x => idsMembros.Contains(x.id)) .Select(x => new { x.id, x.nroAssociado, x.idPessoa }) .ToListJsonObject <Associado>(); if (!listaMembros.Any()) { return; } var listaSaldos = new List <MembroSaldo>(); foreach (var idMembro in idsMembros) { var OMembro = listaMembros.FirstOrDefault(x => x.id == idMembro); if (OMembro == null) { continue; } var NovoSaldo = new MembroSaldo(); NovoSaldo.idOrganizacao = 1; NovoSaldo.idMembro = idMembro; NovoSaldo.idPessoa = OMembro.idPessoa; NovoSaldo.saldoAtual = new decimal(0); listaSaldos.Add(NovoSaldo); } db.MembroSaldo.AddRange(listaSaldos); db.SaveChanges(); }
//Persistir o objecto e atualizar informações private bool atualizar(MembroSaldo OMembroSaldo) { //Localizar existentes no banco MembroSaldo dbMembroSaldo = this.db.MembroSaldo.Find(OMembroSaldo.id); if (dbMembroSaldo == null) { return(false); } OMembroSaldo.setDefaultUpdateValues(); var TipoEntry = db.Entry(dbMembroSaldo); TipoEntry.CurrentValues.SetValues(OMembroSaldo); TipoEntry.ignoreFields(); db.SaveChanges(); return(OMembroSaldo.id > 0); }
// public ActionResult detalhe(int id, string returnUrl) { var ViewModel = new AtendimentoForm(); ViewModel.Atendimento = this.OAtendimentoConsultaBL.carregar(id); var idUnidade = User.idUnidade() == 0 ? null : (int?)User.idUnidade(); if (ViewModel.Atendimento == null) { this.Flash(UtilMessage.TYPE_MESSAGE_ERROR, UtilMessage.error("Erro!", "O atendimento informado não foi encontrado.")); return(RedirectToAction(returnUrl)); } if (!idUnidade.isEmpty() && ViewModel.Atendimento.Associado?.idUnidade != idUnidade) { this.Flash(UtilMessage.TYPE_MESSAGE_ERROR, UtilMessage.error("Erro!", "O atendimento informado pertence a outra unidade.")); return(RedirectToAction("index", "home", new { area = "" })); } if (ViewModel.Atendimento.idAssociado > 0) { var idAssociado = ViewModel.Atendimento.idAssociado.toInt(); ViewModel.AssociadoVinculado = this.OAssociadoRelatorioVWBL.listar(0, "", "", "").Where(x => x.id == idAssociado) .Select(x => new ItemListaAssociado { id = x.id, nroAssociado = x.nroAssociado, descricaoTipoAssociado = x.descricaoTipoAssociado, flagTipoPessoa = x.flagTipoPessoa, nome = x.nome, razaoSocial = x.razaoSocial, nroDocumento = x.nroDocumento, dtCadastro = x.dtCadastro, ativo = x.ativo //flagSituacaoContribuicao = x.flagSituacaoContribuicao }).FirstOrDefault(); } if (ViewModel.Atendimento.idNaoAssociado > 0) { var idNaoAssociado = ViewModel.Atendimento.idNaoAssociado.toInt(); ViewModel.AssociadoVinculado = this.ONaoAssociadoRelatorioVWBL.listar(0, "", "", "").Where(x => x.id == idNaoAssociado) .Select(x => new ItemListaAssociado { id = x.id, nroAssociado = x.nroAssociado, descricaoTipoAssociado = x.descricaoTipoAssociado, flagTipoPessoa = x.flagTipoPessoa, nome = x.nome, razaoSocial = x.razaoSocial, nroDocumento = x.nroDocumento, dtCadastro = x.dtCadastro, ativo = x.ativo }).FirstOrDefault(); } int idMembro = ViewModel.Atendimento.idNaoAssociado > 0 ? ViewModel.Atendimento.idNaoAssociado.toInt() : ViewModel.Atendimento.idAssociado.toInt(); MembroSaldo Saldo = this.OSaldoConsultaBL.query(idMembro) .Select(x => new { x.id, x.saldoAtual, x.dtAtualizacaoSaldo }) .FirstOrDefault() .ToJsonObject <MembroSaldo>() ?? new MembroSaldo(); ViewBag.Saldo = Saldo; return(View(ViewModel)); }
//Gerar saldo inicial quando houve promoção ativa public UtilRetorno gerarSaldoInicial(int id, int idOrganizacaoParam) { UtilRetorno ORetorno = new UtilRetorno { flagError = false }; ConfiguracaoPromocao OConfiguracaoPromocao = this.OConfiguracaoPromocaoConsultaBL.carregar(); if (OConfiguracaoPromocao.id == 0 || OConfiguracaoPromocao.valorPremioNovoMembro <= 0) { ORetorno.flagError = true; ORetorno.listaErros.Add("Não existem promoções disponíveis!"); return(ORetorno); } if (OConfiguracaoPromocao.dtInicioPremioNovoMembro > DateTime.Now.Date || OConfiguracaoPromocao.dtFimPremioNovoMembro < DateTime.Now.Date) { ORetorno.flagError = true; ORetorno.listaErros.Add("Não existem promoções disponíveis!"); return(ORetorno); } if (id == 0) { ORetorno.flagError = true; ORetorno.listaErros.Add("Não foi possível localizar o membro!"); return(ORetorno); } Associado OMembro = this.OAssociadoConsultaBL.queryNoFilter().FirstOrDefault(x => x.id == id) ?? new Associado(); if (OMembro.id.toInt() == 0) { ORetorno.flagError = true; ORetorno.listaErros.Add("Não foi possível localizar o membro!"); return(ORetorno); } if (OMembro.idTipoCadastro == AssociadoTipoCadastroConst.COMERCIANTE) { ORetorno.flagError = true; ORetorno.listaErros.Add("Tipo de cadastro inválido para aplicação da promoção!"); return(ORetorno); } MembroSaldo OSaldo = this.OMembroSaldoConsultaBL.query(id, idOrganizacaoParam).FirstOrDefault() ?? new MembroSaldo(); if (OSaldo.saldoAtual > 0) { ORetorno.flagError = true; ORetorno.listaErros.Add("O membro já possui saldo no sistema!"); return(ORetorno); } MovimentoOperacaoDTO OTransacao = new MovimentoOperacaoDTO(); OTransacao.nroContaOrigem = 1; OTransacao.nroContaDestino = OMembro.nroAssociado.toInt(); OTransacao.valorOperacao = OConfiguracaoPromocao.valorPremioNovoMembro.toDecimal(); OTransacao.flagIgnorarSenha = true; OTransacao = this.CarregadorDados.carregar(OTransacao); ORetorno = this.OTransferenciaFacade.transferir(OTransacao); return(ORetorno); }