Exemple #1
0
        /// <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);
        }
Exemple #3
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);
        }
Exemple #7
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));
        }
Exemple #8
0
        //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);
        }