コード例 #1
0
        /// <summary>
        /// Faz a alteração de qualquer campo informado
        /// </summary>
        private UtilRetorno alterarCampo(TituloReceita OItem, LogAlteracao OLog)
        {
            var ORetorno = UtilRetorno.newInstance(true);

            var listaCamposEditaveis = new[] {
                "observacao", "flagFixa", "valorTotal", "idContaBancaria", "idCentroCusto", "idMacroConta", "idCategoria", "idGatewayPermitido", "limiteParcelamento",
                "nroNotaFiscal", "nroContabil", "nroContrato", "nroDocumento", "dtLimitePagamento",
                "flagBoletoBancarioPermitido", "flagDepositoPermitido", "flagCartaoCreditoPermitido", "emailPrincipal", "descricao"
            };

            if (!listaCamposEditaveis.Contains(OLog.nomeCampoAlterado))
            {
                return(UtilRetorno.newInstance(true, "Campo informado não pode ser editado"));
            }

            OLog.valorAntigo = OItem.alterarValorCampo(OLog.nomeCampoAlterado, OLog.valorNovo);

            if (OLog.valorAntigo == null)
            {
                ORetorno.listaErros.Add("O valor informado é inválido");
                return(ORetorno);
            }

            var successSave = db.SaveChanges();

            if (successSave > 0)
            {
                OLog.valorNovo      = OItem.getValorCampo(OLog.nomeCampoAlterado);
                OLog.oldValueSelect = OLog.valorAntigo.isEmpty() ? null : OLog.oldValueSelect;
                OLogAlteracaoBL.salvar(OLog);

                ORetorno.flagError = false;
                return(ORetorno);
            }

            ORetorno.listaErros.Add("Não foi possível salvar o registro no banco.");
            return(ORetorno);
        }
コード例 #2
0
        /// <summary>
        /// Faz a alteração de qualquer campo informado
        /// </summary>
        private UtilRetorno alterarCampo(TituloDespesa OItem, LogAlteracao OLog)
        {
            var ORetorno = UtilRetorno.newInstance(true);

            var listaCamposEditaveis = new[] {
                "flagFixa", "valorTotal", "descricao", "idContaBancaria", "idCentroCusto", "idMacroConta", "idCategoria",
                "nroNotaFiscal", "nroContabil", "nroContrato", "codigoBoleto", "nroDocumento", "idTipoDespesa", "idModoPagamento", "idContaBancariaFavorecida",
                "documentoPessoaCredor", "nomePessoaCredor", "nroTelPrincipalCredor"
            };

            if (!listaCamposEditaveis.Contains(OLog.nomeCampoAlterado))
            {
                return(UtilRetorno.newInstance(true, "Campo informado não pode ser editado"));
            }

            OLog.valorAntigo = OItem.alterarValorCampo(OLog.nomeCampoAlterado, OLog.valorNovo);

            if (OLog.valorAntigo == null)
            {
                ORetorno.listaErros.Add("O valor informado é inválido");
                return(ORetorno);
            }

            var successSave = db.SaveChanges();

            if (successSave > 0)
            {
                OLog.valorNovo      = OItem.getValorCampo(OLog.nomeCampoAlterado);
                OLog.oldValueSelect = OLog.valorAntigo.isEmpty() ? null : OLog.oldValueSelect;
                OLogAlteracaoBL.salvar(OLog);

                ORetorno.flagError = false;
                return(ORetorno);
            }

            ORetorno.listaErros.Add("Não foi possível salvar o registro no banco.");
            return(ORetorno);
        }
コード例 #3
0
        //Alteracao de senha solicitada pelo usuario
        public UtilRetorno alterarSenha(int idAssociado, string senhaAtual, string novaSenha, bool flagValidarSenhaAtual = true, int?idOrganizacaoParam = null)
        {
            if (idOrganizacao > 0 && idOrganizacaoParam == null)
            {
                idOrganizacaoParam = idOrganizacao;
            }

            var query = from Ass in db.Associado
                        .Include(x => x.Pessoa)
                        where
                        Ass.id == idAssociado &&
                        Ass.dtExclusao == null
                        select
                        Ass;

            var OAssociado = query.FirstOrDefault();

            if (OAssociado == null)
            {
                return(UtilRetorno.newInstance(true, "Desculpe, não foi localizado nenhum associado com os dados informados."));
            }

            query = query.Where(x => x.idOrganizacao == idOrganizacaoParam);

            if (!UtilCrypt.SHA512(senhaAtual).Equals(OAssociado.Pessoa.senha) && flagValidarSenhaAtual)
            {
                return(UtilRetorno.newInstance(true, "A senha atual informada está incorreta."));
            }

            OAssociado.Pessoa.senha = UtilCrypt.SHA512(novaSenha);
            db.SaveChanges();

            //Assinatura e disparo do evento
            this.onSenhaAlterada.subscribe(new OnSenhaAlteradaHandler());
            this.onSenhaAlterada.publish((OAssociado as object));

            return(UtilRetorno.newInstance(false, "A senha foi alterada com sucesso!"));
        }
コード例 #4
0
        public UtilRetorno excluir(int id, string motivoExclusao)
        {
            var idUsuario = User.id();

            var OTituloDespesa = this.carregar(id);

            if (OTituloDespesa == null)
            {
                return(UtilRetorno.newInstance(true, "Registro não localizado"));
            }

            db.TituloDespesa.Where(x => x.id == id)
            .Update(x => new TituloDespesa {
                dtExclusao = DateTime.Now, idUsuarioExclusao = idUsuario, motivoExclusao = motivoExclusao
            });

            db.TituloDespesaPagamento.Where(x => x.idTituloDespesa == id && x.dtExclusao == null)
            .Update(x => new TituloDespesaPagamento {
                dtExclusao = DateTime.Now, idUsuarioExclusao = idUsuario, motivoExclusao = motivoExclusao
            });

            return(UtilRetorno.newInstance(false));
        }
コード例 #5
0
        //Bloquear um determinado associado
        public UtilRetorno bloquearAssociado(int idAssociado, string observacoes)
        {
            this.onDesativacao.subscribe(new OnDesativacaoHandler());

            int idUsuarioLogado = User.id();

            Associado OAssociado = this.db.Associado.FirstOrDefault(x => x.id == idAssociado);

            if (OAssociado == null)
            {
                return(UtilRetorno.newInstance(true, "Associado não encontrado."));
            }

            OAssociado.dtDesativacao        = DateTime.Now;
            OAssociado.idUsuarioDesativacao = idUsuarioLogado;
            OAssociado.ativo = "B";
            db.SaveChanges();

            OAssociado.observacoes = observacoes;
            this.onDesativacao.publish((OAssociado as object));

            return(UtilRetorno.newInstance(false, "Associado bloqueado com sucesso."));
        }
コード例 #6
0
        //Reativar um não associado que estava com status inativo
        public UtilRetorno reativarNaoAssociado(int idAssociado, string observacoes)
        {
            this.onReativacao.subscribe(new OnNaoAssociadoReativacaoHandler());

            int idUsuarioLogado = User.id();

            Associado OAssociado = this.db.Associado.FirstOrDefault(x => x.id == idAssociado && x.dtExclusao == null);

            if (OAssociado == null)
            {
                return(UtilRetorno.newInstance(true, "Cadastro não encontrado."));
            }

            OAssociado.dtReativacao        = DateTime.Now;
            OAssociado.idUsuarioReativacao = idUsuarioLogado;
            OAssociado.ativo = "S";
            db.SaveChanges();

            OAssociado.observacoes = observacoes;
            this.onReativacao.publish((OAssociado as object));

            return(UtilRetorno.newInstance(false, "Não Associado reativado com sucesso."));
        }
コード例 #7
0
        /// <summary>
        ///
        /// </summary>
        public virtual UtilRetorno validaSenha(MovimentoOperacaoDTO Transacao)
        {
            var senhaTransacao = Transacao.MembroOrigem.senhaTransacao;

            if (senhaTransacao.isEmpty())
            {
                return(UtilRetorno.newInstance(true, "A conta informada não possui senha de transação configurada."));
            }

            if (Transacao.tk.isEmpty())
            {
                return(UtilRetorno.newInstance(true, "A senha de confirmação da transação não foi informada."));
            }

            string senhaEnviada = UtilCrypt.SHA512(Transacao.tk);

            if (!senhaEnviada.Equals(senhaTransacao))
            {
                return(UtilRetorno.newInstance(true, "A senha de transação informada é inválida."));
            }

            return(UtilRetorno.newInstance(false, ""));
        }
コード例 #8
0
        //
        public UtilRetorno clonar(TituloDespesa ODespesa, int qtdeReplicacoes)
        {
            var ORetorno = UtilRetorno.newInstance(false);

            var ODespesaClone = this.carregarDadosDespesaBase(ODespesa.id);

            if (ODespesaClone == null)
            {
                ORetorno.flagError = true;

                ORetorno.listaErros.Add("A despesa informada não foi encontrada.");

                return(ORetorno);
            }

            ODespesaClone.id = 0;

            ODespesaClone.idTituloDespesaOrigem = ODespesa.id;

            ODespesaClone.descricao = ODespesa.descricao;

            ODespesaClone.idPessoa = ODespesa.idPessoa;

            ODespesaClone.dtDespesa = ODespesa.dtDespesa;

            ODespesaClone.mesCompetencia = Convert.ToByte(ODespesa.dtDespesa?.Month);

            ODespesaClone.anoCompetencia = Convert.ToInt16(ODespesa.dtDespesa?.Year);

            ODespesaClone.dtVencimento = ODespesa.dtVencimento;

            ODespesaClone.dtQuitacao = null;

            ORetorno = this.salvarDespesas(ODespesaClone, qtdeReplicacoes);

            return(ORetorno);
        }
コード例 #9
0
        /// <summary>
        /// Faz a alteração de qualquer campo informado
        /// </summary>
        private UtilRetorno alterarCampo(TituloDespesaPagamento OItem, LogAlteracao OLog)
        {
            var ORetorno = UtilRetorno.newInstance(true);

            var listaCamposEditaveis = new[] {
                "idCentroCusto", "idMacroConta", "descParcela", "idCategoria", "idMeioPagamento", "idContaBancaria", "dtVencimento", "dtPrevisaoPagamento",
                "valorJuros", "valorMulta", "valorDesconto"
            };

            if (!listaCamposEditaveis.Contains(OLog.nomeCampoAlterado))
            {
                return(UtilRetorno.newInstance(true, "Campo informado não pode ser editado"));
            }

            OLog.valorAntigo = OItem.alterarValorCampo(OLog.nomeCampoAlterado, OLog.valorNovo);

            if (OLog.valorAntigo == null)
            {
                ORetorno.listaErros.Add("O valor informado é inválido");
                return(ORetorno);
            }

            var successSave = db.SaveChanges();

            if (successSave > 0)
            {
                OLog.valorNovo      = OItem.getValorCampo(OLog.nomeCampoAlterado);
                OLog.oldValueSelect = OLog.valorAntigo.isEmpty() ? null : OLog.oldValueSelect;
                OLogAlteracaoBL.salvar(OLog);

                ORetorno.flagError = false;
                return(ORetorno);
            }

            ORetorno.listaErros.Add("Não foi possível salvar o registro no banco.");
            return(ORetorno);
        }
コード例 #10
0
        //Carregamento do registro
        public UtilRetorno enviarEmailCobranca(int id)
        {
            var OPagamento = this.OTituloReceitaPagamentoBL.carregar(id);

            if (OPagamento == null)
            {
                return(UtilRetorno.newInstance(true, "O pagamento informado não pôde ser localizado."));
            }

            if (OPagamento.dtPagamento.HasValue)
            {
                return(UtilRetorno.newInstance(true, "Não é possível enviar o e-mail de cobrança para um pagamento já realizado."));
            }

            if (OPagamento.TituloReceita.idTipoReceita == TipoReceitaConst.OUTROS && OPagamento.TituloReceita.dtQuitacao == null)
            {
                OPagamento = this.OTituloReceitaPagamentoBL.carregar(id);
            }

            if (OPagamento.TituloReceita.emailPrincipal == null)
            {
                return(UtilRetorno.newInstance(true, "Nenhum e-mail foi encontrado para enviar a cobrança."));
            }

            IEnvioCobrancaPagamento OEmail = EnvioCobrancaPagamento.factory(OPagamento.idOrganizacao, new List <string> {
                OPagamento.TituloReceita.emailPrincipal
            }, null);

            var ORetorno = OEmail.enviar(OPagamento);

            if (ORetorno.flagError)
            {
                return(UtilRetorno.newInstance(true, "Ocorreram problemas para disparar o e-mail de cobrança: " + ORetorno.listaErros.FirstOrDefault()));
            }

            return(UtilRetorno.newInstance(false, "O e-mail de cobrança foi enviado com sucesso."));
        }
コード例 #11
0
        //Exclusao Lógica
        public UtilRetorno excluir(int idPerfil, int idRecursoAcao)
        {
            var query = from Perm in db.AcessoPermissao
                        where
                        Perm.flagExcluido == "N"
                        select
                        Perm;

            if (idPerfil > 0)
            {
                query = query.Where(x => x.idPerfilAcesso == idPerfil);
            }

            if (idRecursoAcao > 0)
            {
                query = query.Where(x => x.idRecursoAcao == idRecursoAcao);
            }

            query.Update(x => new AcessoPermissao {
                flagExcluido = "S", dtAlteracao = DateTime.Now
            });

            return(UtilRetorno.newInstance(false, "Os registros foram removidos com sucesso"));
        }
コード例 #12
0
        //Events

        // 1) Enviar email de cobranca
        public UtilRetorno enviarEmailCobranca(int idAssociadoContribuicao)
        {
            AssociadoContribuicao OAssociadoContribuicao = this.OAssociadoContribuicaoBL.carregar(idAssociadoContribuicao);

            if (OAssociadoContribuicao == null)
            {
                return(UtilRetorno.newInstance(true, "O registro de anuidade não foi localizado."));
            }

            if (string.IsNullOrEmpty(OAssociadoContribuicao.Contribuicao.emailCobrancaHtml))
            {
                return(UtilRetorno.newInstance(true, "Não há cadastro do conteúdo que deve ser enviado por e-mail."));
            }

            var listaEmails = OAssociadoContribuicao.Associado.Pessoa.ToEmailList();

            if (listaEmails.Count == 0)
            {
                return(UtilRetorno.newInstance(true, "Não existem contas de e-mails válidas para envio para esse associado."));
            }

            var listaCopias = ConfiguracaoNotificacaoBL.getInstance.carregar().emailCobrancaContribuicao.ToEmailList(";");

            IEnvioCobrancaContribuicao EnvioEmail = EnvioCobrancaContribuicao.factory(OAssociadoContribuicao.idOrganizacao, listaEmails, listaCopias);

            //bool flagEnviado = EnvioEmail.enviar(OAssociadoContribuicao);

            bool flagEnviado = true;

            if (flagEnviado)
            {
                return(UtilRetorno.newInstance(false, "A cobrança foi enviada com sucesso."));
            }

            return(UtilRetorno.newInstance(true, "Ocorreu um problema ao enviar a cobrança, por favor tente novamente."));
        }
コード例 #13
0
        /// <summary>
        ///
        /// </summary>
        public UtilRetorno debitar(MovimentoOperacaoDTO Transacao)
        {
            var RetornoValidacao = this.Validador.validar(Transacao);

            if (RetornoValidacao.flagError)
            {
                return(RetornoValidacao);
            }

            var MovimentoResumo = RetornoValidacao.info as MovimentoResumoVW;

            var RetornoMovimento = GeradorMovimento.debitar(MovimentoResumo);

            if (RetornoMovimento.flagError)
            {
                return(RetornoMovimento);
            }

            var listaMovimentos = RetornoMovimento.info as List <Movimento>;

            var RetornoAtualizador = this.AtualizadorSaldoBL.atualizar(listaMovimentos);

            return(UtilRetorno.newInstance(false, "Lançamento de débito realizado com sucesso!", listaMovimentos.FirstOrDefault()));
        }
コード例 #14
0
        /// <summary>
        /// Altera o valor original do pagamento
        /// </summary>
        private UtilRetorno alterarCampoValorOriginal(TituloReceitaPagamento OItem, LogAlteracao OLog)
        {
            var ORetorno = UtilRetorno.newInstance(true);

            OLog.valorAntigo = OItem.valorOriginal.ToString();

            var valorOrginal = UtilNumber.toDecimal(OLog.valorNovo);

            if (valorOrginal == 0)
            {
                ORetorno.listaErros.Add("O valor informado é inválido");
                return(ORetorno);
            }

            if (valorOrginal < OItem.valorTotalTarifas())
            {
                ORetorno.listaErros.Add("O valor informado é menor que o total de tarifas");
                return(ORetorno);
            }

            OItem.valorOriginal = valorOrginal;
            var successSave = db.SaveChanges();

            if (successSave > 0)
            {
                OLog.valorNovo      = OItem.valorOriginal.ToString();
                OLog.oldValueSelect = OLog.valorAntigo.isEmpty() ? null : OLog.oldValueSelect;
                OLogAlteracaoBL.salvar(OLog);

                ORetorno.flagError = false;
                return(ORetorno);
            }

            ORetorno.listaErros.Add("Não foi possível salvar o registro no banco.");
            return(ORetorno);
        }
コード例 #15
0
        //Exclusao Logica
        public UtilRetorno excluir(int id)
        {
            var db = this.getDataContext();

            PlanoContratacao OPlanoContratacao = this.carregar(id);

            if (OPlanoContratacao == null)
            {
                return(UtilRetorno.newInstance(true, "O registro não pode ser localizado."));
            }

            OPlanoContratacao.flagExcluido = "S";
            OPlanoContratacao.dtAlteracao  = DateTime.Now;

            db.SaveChanges();

            //Excluo tambem o titulo de cobrança
            //ITituloReceitaBL OTituloReceitaPlanoContratacaoBL = new TituloReceitaPlanoContratacaoBL();
            //         int idMacroConta = (int)MacroContaEnum.PLANO;
            //OTituloReceitaPlanoContratacaoBL.excluir(idMacroConta, id);


            return(UtilRetorno.newInstance(false, "O registro foi removido com sucesso."));
        }
コード例 #16
0
        /// <summary>
        ///
        /// </summary>
        public UtilRetorno transferir(MovimentoResumoVW MovimentoResumo)
        {
            var MovimentoOrigem = new Movimento();

            MovimentoOrigem.captarDadosOrigem(MovimentoResumo);
            MovimentoOrigem.idTipoTransacao = (byte)TipoTransacaoEnum.TRANSFERÊNCIA;


            var MovimentoDestino = new Movimento();

            MovimentoDestino.captarDadosDestino(MovimentoResumo);
            MovimentoDestino.idTipoTransacao = (byte)TipoTransacaoEnum.TRANSFERÊNCIA;

            MovimentoOrigem.setDefaultInsertValues();
            MovimentoDestino.setDefaultInsertValues();

            var listaItens = new List <Movimento>();

            listaItens.Add(MovimentoOrigem);
            listaItens.Add(MovimentoDestino);

            db.Movimento.AddRange(listaItens);

            var Retorno = db.validateAndSave();

            if (Retorno.flagError)
            {
                return(Retorno);
            }

            db.Movimento.Where(x => x.id == MovimentoDestino.id).Update(x => new Movimento {
                idMovimentoPrincipal = MovimentoOrigem.id
            });

            return(UtilRetorno.newInstance(false, "", listaItens));
        }
コード例 #17
0
        /// <summary>
        ///
        /// </summary>
        public UtilRetorno debitar(MovimentoResumoVW MovimentoResumo)
        {
            var MovimentoDestino = new Movimento();

            MovimentoDestino.captarDadosDestinoDebito(MovimentoResumo);
            MovimentoDestino.idTipoTransacao = MovimentoResumo.idTipoTransacao;

            MovimentoDestino.setDefaultInsertValues();

            var listaItens = new List <Movimento>();

            listaItens.Add(MovimentoDestino);

            db.Movimento.AddRange(listaItens);

            var Retorno = db.validateAndSave();

            if (Retorno.flagError)
            {
                return(Retorno);
            }

            return(UtilRetorno.newInstance(false, "", listaItens));
        }
コード例 #18
0
        //
        public UtilRetorno excluir(int id)
        {
            var OCupom = this.carregar(id);

            if (OCupom == null)
            {
                return(UtilRetorno.newInstance(true, "Não foi possível remover esse registro."));
            }

            var flagUsadoQtde = db.TituloReceitaPagamento.Count(x => x.idCupomDesconto == id);

            if (OCupom.flagUtilizado || (OCupom.qtdeUsos > 0 && flagUsadoQtde > 0))
            {
                return(UtilRetorno.newInstance(true, "Não é possível editar um cupom de desconto que já foi usado."));
            }

            OCupom.flagExcluido       = "S";
            OCupom.idUsuarioAlteracao = User.id();
            OCupom.dtAlteracao        = DateTime.Now;

            this.db.SaveChanges();

            return(UtilRetorno.newInstance(false, "Registro removido com sucesso."));
        }
コード例 #19
0
        //validar registro
        public UtilRetorno validar(AcessoRecursoAcao OAcessoRecursoAcao)
        {
            if (OAcessoRecursoAcao.idRecursoPai == 0 && OAcessoRecursoAcao.idRecursoGrupo == 0)
            {
                return(UtilRetorno.newInstance(true, "O módulo ou menu não foi informado."));
            }

            if (String.IsNullOrEmpty(OAcessoRecursoAcao.descricao))
            {
                return(UtilRetorno.newInstance(true, "O descrição da ação não foi informada."));
            }

            if (String.IsNullOrEmpty(OAcessoRecursoAcao.controller))
            {
                return(UtilRetorno.newInstance(true, "O controlador da ação não foi informada."));
            }

            if (String.IsNullOrEmpty(OAcessoRecursoAcao.action))
            {
                return(UtilRetorno.newInstance(true, "O nome da ação não foi informada."));
            }

            return(UtilRetorno.newInstance(false, ""));
        }
コード例 #20
0
        /// <summary>
        /// Altera o valor pago do pagamento
        /// </summary>
        private UtilRetorno alterarCampoValorRecebido(TituloReceitaPagamento OItem, LogAlteracao OLog)
        {
            var ORetorno = UtilRetorno.newInstance(true);

            OLog.valorAntigo = OItem.valorRecebido.ToString();

            if (OItem.dtPagamento == null)
            {
                ORetorno.listaErros.Add("Não é possível alterar o valor pago de uma parcela sem pagamento registrado");
                return(ORetorno);
            }

            var valorRecebido = UtilNumber.toDecimal(OLog.valorNovo);

            if (valorRecebido == 0)
            {
                ORetorno.listaErros.Add("O valor informado é inválido");
                return(ORetorno);
            }

            OItem.valorRecebido = valorRecebido;
            var successSave = db.SaveChanges();

            if (successSave > 0)
            {
                OLog.valorNovo      = OItem.valorRecebido.ToString();
                OLog.oldValueSelect = OLog.valorAntigo.isEmpty() ? null : OLog.oldValueSelect;
                OLogAlteracaoBL.salvar(OLog);

                ORetorno.flagError = false;
                return(ORetorno);
            }

            ORetorno.listaErros.Add("Não foi possível salvar o registro no banco.");
            return(ORetorno);
        }
コード例 #21
0
        /// <summary>
        /// Altera o nroDocumento do pagamento
        /// </summary>
        private UtilRetorno alterarCampoNroDocumento(TituloReceitaPagamento OItem, LogAlteracao OLog)
        {
            var ORetorno = UtilRetorno.newInstance(true);

            OLog.valorAntigo = OItem.nroDocumento;

            var nroDocumento = UtilString.onlyAlphaNumber(OLog.valorNovo);

            OItem.nroDocumento = nroDocumento;
            var successSave = db.SaveChanges();

            if (successSave > 0)
            {
                OLog.valorNovo      = OItem.nroDocumento;
                OLog.oldValueSelect = OLog.valorAntigo.isEmpty() ? null : OLog.oldValueSelect;
                OLogAlteracaoBL.salvar(OLog);

                ORetorno.flagError = false;
                return(ORetorno);
            }

            ORetorno.listaErros.Add("Não foi possível salvar o registro no banco.");
            return(ORetorno);
        }
コード例 #22
0
        //Atributos

        //Servicos

        //
        public void enviarEmail(NotificacaoSistema ONotificacao, List <NotificacaoSistemaEnvio> listaEnvios)
        {
            var listaIdsEnviados = new List <int>();

            var listaExcluidos = new List <UtilRetorno>();

            foreach (var ONotificacaoEnvio in listaEnvios)
            {
                var listaEmailsEnvio = ONotificacaoEnvio.ToEmailList();

                var flagEnviado = false;

                var ORetorno = UtilRetorno.newInstance(false);

                foreach (var stringEmail in listaEmailsEnvio)
                {
                    ORetorno = this.enviarEmail(ONotificacao, ONotificacaoEnvio, new List <string> {
                        stringEmail
                    });

                    if (!ORetorno.flagError)
                    {
                        flagEnviado = true;

                        continue;
                    }

                    ORetorno.info = ONotificacaoEnvio.id;
                }

                if (flagEnviado)
                {
                    listaIdsEnviados.Add(ONotificacaoEnvio.id);
                }

                if (!flagEnviado)
                {
                    listaExcluidos.Add(ORetorno);
                }
            }

            if (listaIdsEnviados.Any())
            {
                db.NotificacaoSistemaEnvio.Where(x => listaIdsEnviados.Contains(x.id))
                .Update(x => new NotificacaoSistemaEnvio()
                {
                    dtEnvioEmail = DateTime.Now, flagEnvioEmail = true
                });
            }

            if (listaExcluidos.Any())
            {
                var idsEnviosExcluidos = listaExcluidos.Select(x => x.info.toInt()).Distinct().ToList();

                var listaEnviosExcluidos = db.NotificacaoSistemaEnvio.Where(x => idsEnviosExcluidos.Contains(x.id)).ToList();

                listaEnviosExcluidos.ForEach(x => {
                    x.flagExcluido = true;

                    x.motivoExclusao = listaExcluidos.FirstOrDefault(c => c.info.toInt() == x.id)?.listaErros?.FirstOrDefault() ?? "Os e-mails configurados não são válidos.";
                });

                db.SaveChanges();
            }

            var idsMembrosNotificados = listaEnvios.Where(x => listaIdsEnviados.Contains(x.id) && x.idReferencia > 0)
                                        .Select(x => x.idReferencia.toInt())
                                        .ToList();
        }
コード例 #23
0
        public ActionResult registrarPagamento(BaixaTituloReceitaPagamentoForm ViewModel)
        {
            if (!ModelState.IsValid)
            {
                return(PartialView("modal-registrar-pagamento", ViewModel));
            }

            foreach (var Item in ViewModel.listaTituloReceitaPagamento)
            {
                Item.dtPagamento = ViewModel.TituloReceitaPagamento.dtPagamento;

                Item.dtPrevisaoCredito = ViewModel.TituloReceitaPagamento.dtCredito;

                Item.dtCredito = ViewModel.TituloReceitaPagamento.dtCredito;

                Item.idMeioPagamento = ViewModel.TituloReceitaPagamento.idMeioPagamento;

                Item.idFormaPagamento = ViewModel.TituloReceitaPagamento.idFormaPagamento;

                Item.valorJuros = ViewModel.TituloReceitaPagamento.valorJuros;

                Item.valorRecebido = ViewModel.TituloReceitaPagamento.valorRecebido;

                Item.valorOutrasTarifas = ViewModel.TituloReceitaPagamento.valorOutrasTarifas;

                Item.nroBanco = ViewModel.TituloReceitaPagamento.nroBanco;

                Item.nroDocumento = ViewModel.TituloReceitaPagamento.nroDocumento;

                Item.nroAgencia = ViewModel.TituloReceitaPagamento.nroAgencia;

                Item.nroDigitoAgencia = ViewModel.TituloReceitaPagamento.nroDigitoAgencia;

                Item.nroConta = ViewModel.TituloReceitaPagamento.nroConta;

                Item.nroDigitoConta = ViewModel.TituloReceitaPagamento.nroDigitoConta;

                Item.codigoAutorizacao = ViewModel.TituloReceitaPagamento.codigoAutorizacao;

                Item.valorTarifasBancarias = ViewModel.TituloReceitaPagamento.valorTarifasBancarias;

                Item.flagBaixaAutomatica = false;
            }

            var ORetorno = UtilRetorno.newInstance(false);

            foreach (var OTituloReceitaPagamento in ViewModel.listaTituloReceitaPagamento)
            {
                var Retorno = this.OTituloReceitaPagamentoBaixaBL.registrarPagamento(OTituloReceitaPagamento);

                if (Retorno.flagError)
                {
                    ORetorno.flagError = true;
                }

                ORetorno.listaErros.Add($"Pagamento #{OTituloReceitaPagamento.id} - " + Retorno.listaErros.FirstOrDefault());
            }

            if (ORetorno.flagError)
            {
                this.Flash(UtilMessage.TYPE_MESSAGE_INFO, string.Join("<br/>", ORetorno.listaErros));
            }

            this.Flash(UtilMessage.TYPE_MESSAGE_SUCCESS, string.Join("<br/>", ORetorno.listaErros));

            return(PartialView("modal-registrar-pagamento", ViewModel));
        }
        /// <summary>
        /// Registrar o pagamento de uma parcela de um titulo
        /// Utilizado para a realizacao das baixas manuais
        /// </summary>
        public UtilRetorno registrarPagamento(TituloReceitaPagamento OTituloReceitaPagamento)
        {
            var dbPagamento = db.TituloReceitaPagamento.FirstOrDefault(x => x.id == OTituloReceitaPagamento.id);

            if (dbPagamento == null)
            {
                return(UtilRetorno.newInstance(true, "Pagamento não localizado no sistema."));
            }

            dbPagamento.idUsuarioBaixa = User.id();

            dbPagamento.idUsuarioAlteracao = User.id();

            dbPagamento.dtBaixa = DateTime.Now;

            dbPagamento.flagBaixaAutomatica = false;

            dbPagamento.idStatusPagamento = StatusPagamentoConst.PAGO;

            dbPagamento.idMeioPagamento = OTituloReceitaPagamento.idMeioPagamento;

            dbPagamento.idFormaPagamento = OTituloReceitaPagamento.definirFormaPagamento();

            dbPagamento.dtPagamento = OTituloReceitaPagamento.dtPagamento;

            dbPagamento.dtCredito = OTituloReceitaPagamento.dtCredito;

            dbPagamento.valorJuros = OTituloReceitaPagamento.valorJuros;

            dbPagamento.valorTarifasBancarias = OTituloReceitaPagamento.valorTarifasBancarias;

            if (!String.IsNullOrEmpty(OTituloReceitaPagamento.codigoAutorizacao))
            {
                dbPagamento.codigoAutorizacao = OTituloReceitaPagamento.codigoAutorizacao;
            }

            if (!String.IsNullOrEmpty(OTituloReceitaPagamento.nroBanco))
            {
                dbPagamento.nroBanco = OTituloReceitaPagamento.nroBanco;
            }

            if (!String.IsNullOrEmpty(OTituloReceitaPagamento.nroDocumento))
            {
                dbPagamento.nroDocumento = OTituloReceitaPagamento.nroDocumento;
            }

            if (!String.IsNullOrEmpty(OTituloReceitaPagamento.nroAgencia))
            {
                dbPagamento.nroAgencia = OTituloReceitaPagamento.nroAgencia;
            }

            if (!String.IsNullOrEmpty(OTituloReceitaPagamento.nroDigitoAgencia))
            {
                dbPagamento.nroDigitoAgencia = OTituloReceitaPagamento.nroDigitoAgencia;
            }

            if (!String.IsNullOrEmpty(OTituloReceitaPagamento.nroConta))
            {
                dbPagamento.nroConta = OTituloReceitaPagamento.nroConta;
            }

            if (!String.IsNullOrEmpty(OTituloReceitaPagamento.nroDigitoConta))
            {
                dbPagamento.nroDigitoConta = OTituloReceitaPagamento.nroDigitoConta;
            }

            if (!(OTituloReceitaPagamento.valorRecebido > 0))
            {
                dbPagamento.valorRecebido = dbPagamento.valorOriginal;
            }

            db.SaveChanges();

            this.eventoPagamentoRecebido.subscribe(new OnPagamentoRecebidoHandler());

            this.eventoPagamentoRecebido.publish(dbPagamento as object);

            return(UtilRetorno.newInstance(false, "O pagamento foi registrado com sucesso."));
        }
コード例 #25
0
        //Metodo para geracao do titulo de receita
        public override UtilRetorno gerar(object OrigemTitulo)
        {
            Pedido OPedido = (OrigemTitulo as Pedido);

            if (OPedido == null)
            {
                return(UtilRetorno.newInstance(true, "O registro Pedido está nulo."));
            }

            //Verificar se o titulo já existe
            var OTituloReceita = this.OTituloReceitaBL.carregarPorReceita(OPedido.id);

            if (OTituloReceita != null)
            {
                return(UtilRetorno.newInstance(false, "O título já foi gerado anteriormente.", OTituloReceita));
            }

            var OConfigEcommerce = OConfiguracaoEcommerceBL.carregar(User.idOrganizacao(), false);

            OTituloReceita = new TituloReceita();

            OTituloReceita.idPessoa = OPedido.idPessoa;

            OTituloReceita.idTipoReceita = (byte)idTipoReceita;

            OTituloReceita.idReceita = OPedido.id;

            OTituloReceita.idOrganizacao = OPedido.idOrganizacao.toInt();

            OTituloReceita.idUnidade = OPedido.idUnidade;

            OTituloReceita.limiteParcelamento = OConfigEcommerce.qtdeLimiteParcelas;

            OTituloReceita.qtdeRepeticao = 1;

            OTituloReceita.mesCompetencia = (byte?)OPedido.dtFaturamento?.Month;

            OTituloReceita.anoCompetencia = (short?)OPedido.dtFaturamento?.Year;

            if (OTituloReceita.mesCompetencia > 0 && OTituloReceita.anoCompetencia > 0)
            {
                byte?diaCompetencia = OPedido.dtFaturamento?.Day.toByte();

                diaCompetencia = diaCompetencia.toByte() > 0 ? diaCompetencia.toByte() : (byte)1;

                OTituloReceita.dtCompetencia = new DateTime(OTituloReceita.anoCompetencia.toInt(), OTituloReceita.mesCompetencia.toInt(), diaCompetencia.toInt());
            }

            OTituloReceita.idContaBancaria = OPedido.idContaBancaria;

            OTituloReceita.idCentroCusto = OPedido.idCentroCusto;

            OTituloReceita.idMacroConta = OPedido.idMacroConta;

            OTituloReceita.idCategoria = OPedido.idCategoriaTitulo;

            OTituloReceita.flagCartaoCreditoPermitido = OPedido.flagCartaoCreditoPermitido;

            OTituloReceita.flagBoletoBancarioPermitido = OPedido.flagBoletoBancarioPermitido;

            OTituloReceita.flagDepositoPermitido = OPedido.flagDepositoPermitido;

            OTituloReceita.descricao = $"Pedido {OPedido.id}";

            OTituloReceita.valorTotal = OPedido.getValorTotal();

            OTituloReceita.dtVencimentoOriginal = OPedido.dtVencimento;

            OTituloReceita.dtVencimento = OPedido.dtVencimento;

            this.preencherRecibo(ref OTituloReceita, OPedido.Pessoa);

            this.salvar(OTituloReceita);

            return(UtilRetorno.newInstance(false, "O título foi gerado com sucesso.", OTituloReceita));
        }
コード例 #26
0
        //Metodo para geracao do titulo de receita
        public override UtilRetorno gerar(object OrigemTitulo)
        {
            var OAssociado = (OrigemTitulo as Associado);

            if (OAssociado == null)
            {
                return(UtilRetorno.newInstance(true, "O Objeto (associado) para gerar o título de taxa de inscrição não foi informado"));
            }

            var OTipoAssociado = this.OTipoAssociadoBL.carregar(UtilNumber.toInt32(OAssociado.idTipoAssociado));

            if (OTipoAssociado == null)
            {
                return(UtilRetorno.newInstance(true, "O Objeto (tipo) para gerar o título de taxa de inscrição não foi informado"));
            }

            //Verificar se o titulo já existe
            TituloReceita OTituloReceita = this.OTituloReceitaBL.carregarPorReceita(OAssociado.id);

            if (OTituloReceita != null)
            {
                return(UtilRetorno.newInstance(false, "O título já foi gerado antes.", OTituloReceita));
            }

            OTituloReceita = new TituloReceita();

            OTituloReceita.idPessoa = OAssociado.idPessoa;

            OTituloReceita.idTipoReceita = (byte)idTipoReceita;

            OTituloReceita.idReceita = OAssociado.id;

            OTituloReceita.idOrganizacao = OAssociado.idOrganizacao;

            OTituloReceita.idUnidade = OAssociado.idUnidade;

            OTituloReceita.qtdeRepeticao = 1;

            OTituloReceita.mesCompetencia = (byte)DateTime.Today.Month;

            OTituloReceita.anoCompetencia = (short)DateTime.Today.Year;

            if (OTituloReceita.mesCompetencia > 0 && OTituloReceita.anoCompetencia > 0)
            {
                byte?diaCompetencia = DateTime.Today.Day.toByte();

                diaCompetencia = diaCompetencia.toByte() > 0 ? diaCompetencia.toByte() : (byte)1;

                OTituloReceita.dtCompetencia = new DateTime(OTituloReceita.anoCompetencia.toInt(), OTituloReceita.mesCompetencia.toInt(), diaCompetencia.toInt());
            }

            OTituloReceita.idContaBancaria = OTipoAssociado.idContaBancariaInscricao;

            OTituloReceita.idCentroCusto = OTipoAssociado.idCentroCustoInscricao;

            OTituloReceita.idMacroConta = OTipoAssociado.idMacroContaInscricao;

            OTituloReceita.idCategoria = null;


            OTituloReceita.descricao = string.Concat("Taxa de Inscrição", " - ", OAssociado.Pessoa.nome).abreviar(100);

            OTituloReceita.valorTotal = Math.Round(UtilNumber.toDecimal(OTipoAssociado.valorTaxaInscricao), 2);

            OTituloReceita.dtVencimentoOriginal = DateTime.Today.AddDays(OTipoAssociado.diasPrazoTaxaInscricao ?? 5);

            OTituloReceita.dtVencimento = OTituloReceita.dtVencimentoOriginal;

            this.preencherRecibo(ref OTituloReceita, OAssociado.Pessoa);

            this.salvar(OTituloReceita);

            return(UtilRetorno.newInstance(false, "O título foi gerado com sucesso.", OTituloReceita));
        }
コード例 #27
0
        public UtilRetorno calcularImpostoTitulo(int idTabelaImposto, TituloImposto OTituloImposto)
        {
            var ORetorno = UtilRetorno.newInstance(false);

            decimal valorBase = 0;

            if (OTituloImposto.idTituloDespesa > 0)
            {
                valorBase = OTituloDespesaBL.carregar(OTituloImposto.idTituloDespesa.toInt()).valorTotalComDesconto();
                OTituloImposto.idTituloReceita = null;
            }

            if (OTituloImposto.idTituloReceita > 0)
            {
                valorBase = OTituloReceitaConsultaBL.carregar(OTituloImposto.idTituloReceita.toInt()).valorTotalComDesconto();
                OTituloImposto.idTituloDespesa = null;
            }

            if (valorBase <= 0)
            {
                ORetorno.flagError = true;
                ORetorno.listaErros.Add("É necessário que o valor do título seja maior que zero.");

                return(ORetorno);
            }

            var OTabela = OTabelaImpostoConsultaBL.carregar(idTabelaImposto);

            if (OTabela == null)
            {
                ORetorno.flagError = true;
                ORetorno.listaErros.Add("Não foi possível encontrar a tabela de imposto");

                return(ORetorno);
            }

            OTituloImposto.percentualCOFINS = OTabela.percentualCOFINS;
            OTituloImposto.valorCOFINS      = (OTabela.percentualCOFINS / 100) * valorBase;

            OTituloImposto.percentualICMS = OTabela.percentualICMS;
            OTituloImposto.valorICMS      = (OTabela.percentualICMS / 100) * valorBase;

            OTituloImposto.percentualISS = OTabela.percentualISS;
            OTituloImposto.valorISS      = (OTabela.percentualISS / 100) * valorBase;

            OTituloImposto.percentualPIS = OTabela.percentualPIS;
            OTituloImposto.valorPIS      = (OTabela.percentualPIS / 100) * valorBase;

            var flagSucesso = OTituloImpostoBL.salvar(OTituloImposto);

            if (flagSucesso)
            {
                ORetorno.flagError = false;
                ORetorno.listaErros.Add("Dados de impostos do titulo preenchidos com sucesso.");

                return(ORetorno);
            }

            ORetorno.flagError = true;
            ORetorno.listaErros.Add("Erro ao preencher dados de impostos do titulo.");

            return(ORetorno);
        }
コード例 #28
0
        //Atributos

        //Propriedades

        //Excluir o registro de um pagamento e salvar os dados de log
        //Chamar rotina para reordenar descrição das parcelas
        public UtilRetorno excluirPagamento(int idTituloReceitaPagamento, string motivoExclusao, bool?flagAtualizarParcelas = true, string flagOutros = "")
        {
            using (var Context = new DataContext()){
                try{
                    var dbPagamento = db.TituloReceitaPagamento.condicoesSeguranca().FirstOrDefault(x => x.id == idTituloReceitaPagamento && x.dtExclusao == null);

                    if (dbPagamento == null)
                    {
                        return(UtilRetorno.newInstance(true, "Pagamento não localizado no sistema"));
                    }

                    if (dbPagamento.dtPagamento.HasValue)
                    {
                        return(UtilRetorno.newInstance(true, "Não é possível remover com o pagamento já realizado"));
                    }

                    dbPagamento.motivoExclusao = motivoExclusao;

                    dbPagamento.dtExclusao = DateTime.Now;

                    dbPagamento.idUsuarioExclusao = User.id();

                    dbPagamento.idUsuarioAlteracao = User.id();

                    db.SaveChanges();

                    if (flagOutros == "NEXT")
                    {
                        Context.TituloReceitaPagamento
                        .Where(x => x.dtExclusao == null && x.idTituloReceita == dbPagamento.idTituloReceita && x.dtPagamento == null && (x.dtVencimento > dbPagamento.dtVencimento || (x.dtVencimento == dbPagamento.dtVencimento && x.id > dbPagamento.id)))
                        .Update(x => new TituloReceitaPagamento()
                        {
                            motivoExclusao    = dbPagamento.motivoExclusao,
                            dtExclusao        = DateTime.Now,
                            idUsuarioExclusao = dbPagamento.idUsuarioExclusao
                        });
                    }

                    if (flagOutros == "ALL")
                    {
                        db.TituloReceitaPagamento
                        .Where(x => x.dtExclusao == null && x.idTituloReceita == dbPagamento.idTituloReceita && x.dtPagamento == null)
                        .Update(x => new TituloReceitaPagamento()
                        {
                            motivoExclusao    = dbPagamento.motivoExclusao,
                            dtExclusao        = DateTime.Now,
                            idUsuarioExclusao = dbPagamento.idUsuarioExclusao
                        });
                    }

                    if (flagAtualizarParcelas == true)
                    {
                        this.atualizarDescricaoParcelas(dbPagamento.idTituloReceita);
                    }

                    return(UtilRetorno.newInstance(false, "Exclusão do(s) pagamento(s) realizado com sucesso."));
                }
                catch (Exception ex) {
                    UtilLog.saveError(ex, $"Erro ao excluir manualmente o pagamento da receita {idTituloReceitaPagamento}.");
                }
            }
            return(UtilRetorno.newInstance(true, "Não foi possível realizar a exclusão do(s) pagamento(s)."));
        }
コード例 #29
0
        //Metodo para geracao do titulo de Despesa
        public override UtilRetorno gerar(object OrigemTitulo)
        {
            var OContaBancariaMovimentacao = (OrigemTitulo as ContaBancariaMovimentacao);

            if (OContaBancariaMovimentacao == null)
            {
                return(UtilRetorno.newInstance(true, "O registro ContaMovimentação está nulo."));
            }

            //Verificar se o titulo já existe
            var OTituloDespesa = this.OTituloDespesaBL.carregarPorDespesa(OContaBancariaMovimentacao.id);

            if (OTituloDespesa != null)
            {
                return(UtilRetorno.newInstance(false, "O título já foi gerado anteriormente.", OTituloDespesa));
            }

            OTituloDespesa = new TituloDespesa();

            OTituloDespesa.idTipoDespesa = idTipoDespesa;

            OTituloDespesa.idDespesa = OContaBancariaMovimentacao.id;

            OTituloDespesa.idOrganizacao = OContaBancariaMovimentacao.idOrganizacao.toInt();

            OTituloDespesa.idUnidade = OContaBancariaMovimentacao.idUnidade;

            OTituloDespesa.qtdeRepeticao = 1;

            OTituloDespesa.mesCompetencia = (byte?)OContaBancariaMovimentacao.dtOperacao.Month;

            OTituloDespesa.anoCompetencia = (short?)OContaBancariaMovimentacao.dtOperacao.Year;

            if (OTituloDespesa.mesCompetencia > 0 && OTituloDespesa.anoCompetencia > 0)
            {
                byte?diaCompetencia = OContaBancariaMovimentacao.dtOperacao.Day.toByte();

                diaCompetencia = diaCompetencia.toByte() > 0 ? diaCompetencia.toByte() : (byte)1;

                OTituloDespesa.dtDespesa = new DateTime(OTituloDespesa.anoCompetencia.toInt(), OTituloDespesa.mesCompetencia.toInt(), diaCompetencia.toInt());
            }

            OTituloDespesa.idContaBancaria = OContaBancariaMovimentacao.idContaBancariaOrigem;

            var OContaBancariaDestino = this.OContaBancariaBL.carregar(OContaBancariaMovimentacao.idContaBancariaDestino) ?? new ContaBancaria();

            OTituloDespesa.descricao = $"Transferência realizada para a conta { OContaBancariaDestino.OBanco?.nome }: { OContaBancariaDestino.nroConta }/{ OContaBancariaDestino.nroAgencia }";

            OTituloDespesa.valorTotal = OContaBancariaMovimentacao.valor;

            OTituloDespesa.dtVencimento = DateTime.Now;

            OTituloDespesa.dtQuitacao = DateTime.Now;

            this.salvar(OTituloDespesa);

            if (OTituloDespesa.id > 0)
            {
                this.gerarPagamento(OTituloDespesa);
            }

            return(UtilRetorno.newInstance(false, "O título foi gerado com sucesso.", OTituloDespesa));
        }
コード例 #30
0
        //Metodo para geracao do titulo de receita
        public override UtilRetorno gerar(object OrigemTitulo)
        {
            AssociadoContribuicao AssociadoContribuicao = (OrigemTitulo as AssociadoContribuicao);

            if (AssociadoContribuicao == null)
            {
                return(UtilRetorno.newInstance(true, "O registro Associado Contribuição está nulo."));
            }

            if (AssociadoContribuicao.Contribuicao == null)
            {
                return(UtilRetorno.newInstance(true, "O registro Contribuição está nulo."));
            }

            //Verificar se o titulo já existe
            var OTituloReceita = this.OTituloReceitaBL.carregarPorReceita(AssociadoContribuicao.id);

            if (OTituloReceita != null)
            {
                return(UtilRetorno.newInstance(false, "O título já foi gerado anteriormente.", OTituloReceita));
            }

            var OAssociado = AssociadoContribuicao.Associado;

            var Contribuicao = AssociadoContribuicao.Contribuicao;

            var ConfiguracaoContribuicao = ConfiguracaoContribuicaoBL.getInstance.carregar(AssociadoContribuicao.idOrganizacao);

            OTituloReceita = new TituloReceita();

            OTituloReceita.idPessoa = AssociadoContribuicao.Associado.idPessoa;

            OTituloReceita.idTipoReceita = (byte)idTipoReceita;

            OTituloReceita.idReceita = AssociadoContribuicao.id;

            OTituloReceita.idOrganizacao = AssociadoContribuicao.idOrganizacao;

            OTituloReceita.idUnidade = AssociadoContribuicao.idUnidade;

            OTituloReceita.qtdeRepeticao = 1;

            OTituloReceita.mesCompetencia = (byte?)AssociadoContribuicao.dtInicioVigencia?.Month;

            OTituloReceita.anoCompetencia = (short?)AssociadoContribuicao.dtInicioVigencia?.Year;

            if (OTituloReceita.mesCompetencia > 0 && OTituloReceita.anoCompetencia > 0)
            {
                byte?diaCompetencia = AssociadoContribuicao.dtInicioVigencia?.Day.toByte();

                diaCompetencia = diaCompetencia.toByte() > 0 ? diaCompetencia.toByte() : (byte)1;

                OTituloReceita.dtCompetencia = new DateTime(OTituloReceita.anoCompetencia.toInt(), OTituloReceita.mesCompetencia.toInt(), diaCompetencia.toInt());
            }

            OTituloReceita.idContaBancaria = Contribuicao.idContaBancaria > 0 ? Contribuicao.idContaBancaria : ConfiguracaoContribuicao.idContaBancariaPadrao;

            OTituloReceita.idCentroCusto = Contribuicao.idCentroCusto > 0 ? Contribuicao.idCentroCusto : ConfiguracaoContribuicao.idCentroCustoPadrao;

            OTituloReceita.idMacroConta = Contribuicao.idMacroConta > 0 ? Contribuicao.idMacroConta : ConfiguracaoContribuicao.idMacroContaPadrao;

            OTituloReceita.idCategoria = Contribuicao.idCategoriaTitulo;

            OTituloReceita.limiteParcelamento = Contribuicao.qtdeLimiteParcelas ?? 1;

            OTituloReceita.flagCartaoCreditoPermitido = Contribuicao.flagCartaoCreditoPermitido;

            OTituloReceita.flagBoletoBancarioPermitido = Contribuicao.flagBoletoBancarioPermitido;

            OTituloReceita.flagDepositoPermitido = Contribuicao.flagDepositoPermitido;

            OTituloReceita.descricao = $"Cobrança {Contribuicao.descricao} - {AssociadoContribuicao.Associado.Pessoa.nome}";

            if (AssociadoContribuicao.dtInicioVigencia.HasValue)
            {
                OTituloReceita.descricao = $"{OTituloReceita.descricao}. Vigência: {AssociadoContribuicao.dtInicioVigencia.exibirData()} à {AssociadoContribuicao.dtFimVigencia.exibirData()}";
            }

            OTituloReceita.valorTotal = AssociadoContribuicao.valorAtual;

            OTituloReceita.dtVencimentoOriginal = AssociadoContribuicao.dtVencimentoOriginal;

            OTituloReceita.dtVencimento = AssociadoContribuicao.dtVencimentoAtual;

            this.preencherRecibo(ref OTituloReceita, OAssociado.Pessoa);

            var TabelaPreco = Contribuicao.retornarTabelaVigente();

            OTituloReceita.listaDescontosAntecipacao = TabelaPreco.retornarListaDescontos(AssociadoContribuicao.idTipoAssociado, AssociadoContribuicao.dtVencimentoOriginal);

            this.salvar(OTituloReceita);

            return(UtilRetorno.newInstance(false, "O título foi gerado com sucesso.", OTituloReceita));
        }