Пример #1
0
        private decimal?ObtemSalarioAtivoMetrus(PlanoVinculadoEntidade plano)
        {
            var fichaFinanceira = new FichaFinanceiraProxy().BuscarPorFundacaoPlanoInscricao(plano.CD_FUNDACAO, plano.CD_PLANO, plano.NUM_INSCRICAO).ToList();

            switch (plano.CD_PLANO)
            {
            case "0002":
                return(fichaFinanceira
                       .Where(x => x.CD_TIPO_CONTRIBUICAO == "34")
                       .OrderByDescending(x => x.ANO_COMP)
                       .ThenByDescending(x => x.MES_COMP)
                       .ToList()
                       .FirstOrDefault()
                       .SRC);

            case "0001":
                return(fichaFinanceira.Where(x => x.CD_TIPO_CONTRIBUICAO == "01")
                       .OrderByDescending(x => x.ANO_COMP)
                       .ThenByDescending(x => x.MES_COMP)
                       .ToList()
                       .FirstOrDefault()
                       .SRC);

            default:
                return(0);
            }
        }
Пример #2
0
        public List <NaturezaEntidade> BuscarPorPlanoCategoria(PlanoVinculadoEntidade plano)
        {
            Plano = plano;

            var naturezas = new NaturezaProxy().BuscarPorPlanoCategoria(plano.CD_PLANO, Ativo, Assistidoo, Autopatrocinio, Diferido).ToList();

            return(naturezas);
        }
Пример #3
0
        public NaturezaEntidade BuscarPorCdNaturPlanoCategoria(decimal CdNatur, PlanoVinculadoEntidade plano)
        {
            Plano = plano;

            var natureza = new NaturezaProxy().BuscarPorCdNaturPlanoCategoria(CdNatur, plano.CD_PLANO, Ativo, Assistidoo, Autopatrocinio, Diferido);

            return(natureza);
        }
Пример #4
0
        public List <NaturezaEntidade> BuscarPorModalidadePlanoCategoriaPermiteConcessaoWeb(decimal CdModal, PlanoVinculadoEntidade plano, string permiteConcessaoWeb = DMN_SN.SIM)
        {
            Plano = plano;

            var natureza = new NaturezaProxy().BuscarPorModalidadePlanoCategoriaPermiteConcessaoWeb(CdModal, plano.CD_PLANO, Ativo, Assistidoo, Autopatrocinio, Diferido, permiteConcessaoWeb);

            return(natureza);
        }
Пример #5
0
 public TermoOpcao(WebReqInstitutoEntidade reqInstituto, FuncionarioEntidade funcionario, DadosPessoaisEntidade dadosPessoais, PlanoVinculadoEntidade plano, EmpresaEntidade empresa, EntidadeEntidade entidade, string estadoCivil, string enderecoPortabilidade, DateTime dataSolicitacao, string protocolo, string textoTermo, bool mostrarBPD, bool mostrarAutopatrocinio, bool mostrarResgate, bool mostrarPortabilidade)
 {
     ReqInstituto          = reqInstituto;
     Funcionario           = funcionario;
     DadosPessoais         = dadosPessoais;
     Plano                 = plano;
     Empresa               = empresa;
     Entidade              = entidade;
     EstadoCivil           = estadoCivil;
     EnderecoPortabilidade = enderecoPortabilidade;
     DataSolicitacao       = dataSolicitacao;
     Protocolo             = protocolo;
     TextoTermo            = textoTermo;
     MostrarBPD            = mostrarBPD;
     MostrarAutopatrocinio = mostrarAutopatrocinio;
     MostrarResgate        = mostrarResgate;
     MostrarPortabilidade  = mostrarPortabilidade;
 }
Пример #6
0
        public override long Inserir(PlanoVinculadoEntidade entidade)
        {
            base.Insert(
                entidade.CD_FUNDACAO
                , entidade.NUM_INSCRICAO
                , entidade.CD_PLANO
                , entidade.DT_INSC_PLANO
                , entidade.CD_SIT_PLANO
                , entidade.DT_SITUACAO_ATUAL
                , entidade.CD_MOTIVO_DESLIG
                , entidade.DT_DESLIG_PLANO
                , entidade.FUNDADOR
                , entidade.PERC_TAXA_MAXIMA
                , entidade.GRUPO
                , entidade.DT_PRIMEIRA_CONTRIB
                , entidade.DT_VENC_CARENCIA
                , entidade.CD_SIT_INSCRICAO
                , entidade.TIPO_IRRF
                , entidade.IDADE_RECEB_BENEF
                , entidade.CD_TIPO_COBRANCA
                , entidade.NUM_BANCO
                , entidade.NUM_AGENCIA
                , entidade.NUM_CONTA
                , entidade.DIA_VENC
                , entidade.CD_GRUPO
                , entidade.CD_PERFIL_INVEST
                , entidade.NUM_PROTOCOLO
                , entidade.VITALICIO
                , entidade.VL_PERC_VITALICIO
                , entidade.LEI_108
                , entidade.SALDO_PROJ
                , entidade.PECULIO_INV
                , entidade.PECULIO_MORTE
                , entidade.INTEGRALIZA_SALDO
                , entidade.CK_EXTRATO_CST
                , entidade.DT_EMISSAO_CERTIFICADO
                , entidade.TIPO_IRRF_CANC
                , entidade.IND_OPTANTE_MAXIMA_BASICA
                , entidade.IND_AFA_JUDICIAL
                );

            return(0);
        }
        public CalculosEmprestimo(
            FuncionarioDados dados,
            ModalidadeEntidade modalidade,
            NaturezaEntidade natureza,
            PlanoVinculadoEntidade plano,
            DateTime dataCredito,
            DateTime dataSolicitacao
            )
        {
            Dados           = dados;
            Modalidade      = modalidade;
            Natureza        = natureza;
            Plano           = plano;
            DataCredito     = dataCredito;
            DataSolicitacao = dataSolicitacao;

            DataReferenciaAUtilizar =
                Modalidade.ID_VIGENCIA_TAXAS == DMN_ID_VIGENCIA_TAXAS.UTILIZAR_DATA_SOLICITACAO
                ? DataSolicitacao : DataCredito;

            CarregarTaxas();
        }
        public CalculosEmprestimo(
            FuncionarioDados dados,
            NaturezaEntidade natureza,
            PlanoVinculadoEntidade plano,
            DateTime dataCredito,
            DateTime dataSolicitacao
            )
        {
            Dados           = dados;
            Natureza        = natureza;
            Plano           = plano;
            DataCredito     = dataCredito;
            DataSolicitacao = dataSolicitacao;

            Modalidade = new ModalidadeProxy().BuscarPorCodigo(Natureza.CD_MODAL.Value);

            DataReferenciaAUtilizar =
                Modalidade.ID_VIGENCIA_TAXAS == DMN_ID_VIGENCIA_TAXAS.UTILIZAR_DATA_SOLICITACAO
                ? DataSolicitacao : DataCredito;

            CarregarTaxas();
        }
Пример #9
0
 public static bool IsAssistido(this PlanoVinculadoEntidade plano) => plano.CD_CATEGORIA == "4";
Пример #10
0
 public static bool IsAutopatrocinio(this PlanoVinculadoEntidade plano) => plano.CD_CATEGORIA == "3";
Пример #11
0
 public static bool IsDesligado(this PlanoVinculadoEntidade plano) => plano.CD_CATEGORIA == "2";
Пример #12
0
 public static bool IsAtivo(this PlanoVinculadoEntidade plano) => plano.CD_CATEGORIA == "1" || plano.CD_CATEGORIA == "5";
Пример #13
0
 public static bool IsDiferido(this PlanoVinculadoEntidade plano) => plano.CD_CATEGORIA == "6";
Пример #14
0
        private decimal ObtemSalarioDosAssistidos(string cdEmpresa, string numMatricula, PlanoVinculadoEntidade plano, int?seqRecebedor)
        {
            if (!seqRecebedor.HasValue)
            {
                throw new Exception("Assistido não possui SeqRecebedor ao buscar Salario Real de Contribuicao");
            }

            //var fichas = new FichaFinanceiraAssistidoProxy().BuscarDatasPorRecebedor(plano.CD_FUNDACAO, cdEmpresa, numMatricula, seqRecebedor, plano.CD_PLANO, );

            var fichas = new List <FichaFinanceiraAssistidoEntidade>();

            //Buscar todas RUBRICAS_PREVIDENCIAL com INCID_LIQUIDO  = 'S' e INCID_MARGEM_CONSIG = 'S'
            var enRubrica = new RubricasPrevidencialProxy().BuscarIncideLiquidoMargemConsig(DMN_SN.SIM, DMN_SN.SIM).ToList();

            var proxyFichaFinancAssistido = new FichaFinanceiraAssistidoProxy();
            var dtFichas = proxyFichaFinancAssistido
                           .BuscarPorFundacaoEmpresaMatriculaPlanoRecebedor(plano.CD_FUNDACAO, cdEmpresa, numMatricula, seqRecebedor.Value, plano.CD_PLANO);

            var qry = from row in dtFichas
                      where enRubrica.Select(x => x.CD_RUBRICA).Contains(row.CD_RUBRICA)
                      select row;

            foreach (var ficha in qry)
            {
                var    Rubrica  = enRubrica.Where(x => x.CD_RUBRICA == ficha.CD_RUBRICA).SingleOrDefault();
                string provdesc = Rubrica.RUBRICA_PROV_DESC;
                fichas.Add(ficha);
            }

            DateTime dt    = DateTime.Today;
            decimal  total = 0;

            int i = 0;

            do
            {
                DateTime dtCompInicial = new DateTime(dt.Year, dt.Month, 1);
                DateTime dtCompFinal   = dt.UltimoDiaDoMes();

                var filtro = fichas.Where(x => x.DT_COMPETENCIA >= dtCompInicial &&
                                          x.DT_COMPETENCIA <= dtCompFinal);

                //verificar se existe dados, senao buscar dados do mes anterior ate encontrar
                //ou a pesquisa procure por mais de 1 ano
                if (filtro.Count() != 0)
                {
                    foreach (var item in filtro)
                    {
                        if (item.RUBRICA_PROV_DESC == "P")
                        {
                            total += item.VALOR_MC.Value;
                        }
                        else
                        {
                            total -= item.VALOR_MC.Value;
                        }
                    }

                    break;
                }

                dt = dt.AddMonths(-1);

                i++;
            } while (i < 12); //while evita loop infinito na logica

            return(total);
        }
Пример #15
0
        public decimal BuscarUltimoSalario2(string cdEmpresa, string matricula, decimal origem, PlanoVinculadoEntidade plano, bool abatePensao = true, int?seqRecebedor = null)
        {
            var dataAtual    = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 01);
            var dataAnterior = new DateTime(DateTime.Now.AddMonths(-1).Year, DateTime.Now.AddMonths(-1).Month, 01);

            var rubricasAdicionais = new RubricasAdicionaisProxy().BuscarPorFundacaoEmpresaMatriculaOrigemReferencia(plano.CD_FUNDACAO, cdEmpresa, matricula, origem, dataAtual, dataAnterior);

            var valorPensao = rubricasAdicionais.Where(x => x.CD_RUBRICA == "761").Sum(x => x.VL_RUBRICA).Value;

            switch (plano.CD_CATEGORIA)
            {
            case DMN_CATEGORIA.ATIVO:
                var salario = ObtemSalarioAtivo(plano).Value;
                return(abatePensao ? salario - valorPensao : salario);

            case DMN_CATEGORIA.AUTOPATROCINIO:
            case DMN_CATEGORIA.EM_LICENCA:           //Ativos, Autopatrocinados ou Em licença
            case DMN_CATEGORIA.DIFERIDO:
                return(0);

            //return p.ObtemUltimoSRCFichaFinanceira() - valorPensao;//Buscar entrada mais recente da ficha financeira
            case DMN_CATEGORIA.ASSISTIDO:          //Assistidos
                return(ObtemSalarioDosAssistidos(cdEmpresa, matricula, plano, seqRecebedor));

            case DMN_CATEGORIA.DESLIGADO:           //Desligados
            default:
                return(0);
            }
        }
Пример #16
0
        public decimal CalcularMargem(PlanoVinculadoEntidade plano, string cdEmpresa, decimal cdModal, decimal cdNatur, DateTime dtCredito, string matricula, decimal origem, MargensEntidade margem, TaxasEncargosEntidade encargo, TaxasConcessaoEntidade taxaConcessao)
        {
            var valorMargemCalculada = 0M;

            var parametros = new ParametrosProxy().Buscar();

            if (parametros.REGRA_MARGEM_PLANO == DMN_SN.SIM)
            {
                //TODO: Regra pelo plano
            }
            else
            {
                if (margem.MARGEM_BPA_EXTERNA == "E")
                {
                    decimal numeroGrFamil = 0;

                    var margemCalDados = new MargensCalculadasProxy()
                                         .BuscarPorFundacaoEmpresaOrigemMatriculaGrupo(plano.CD_FUNDACAO, cdEmpresa, origem, matricula, numeroGrFamil);

                    valorMargemCalculada = margemCalDados.VL_MARGEM ?? 0;
                }
                else if (margem.MARGEM_BPA_EXTERNA == "C")
                {
                    // Regra não existia no simulador antigo
                }

                decimal  przMax                = ObterPrazoMaximo(cdNatur);
                decimal  percTaxa              = taxaConcessao.TX_JUROS.Value / 100;
                decimal  jurosPorPrazo         = (decimal)Math.Pow((double)(1 + percTaxa), (double)przMax);
                decimal  w_tx_assist_prest_bl  = margem.TX_ASSIST_MC.Value;
                decimal  w_vl_prest            = plano.UltimoSalario * (w_tx_assist_prest_bl / 100);
                decimal  w_fator_taxas         = 1;
                DateTime dtAniversarioNatureza = ObterDataAniversarioNatureza(cdNatur, dtCredito);
                decimal  diferencaDias         = (dtAniversarioNatureza - dtCredito).Days;
                decimal  w_fator_aplicado      = Convert.ToDecimal(Math.Pow((double)(1 + percTaxa), (double)(diferencaDias / dtCredito.UltimoDiaDoMes().Day)));

                switch (plano.CD_CATEGORIA)
                {
                case DMN_CATEGORIA.ATIVO:
                    valorMargemCalculada = plano.UltimoSalario * (margem.TX_ATIVO_SP.Value / 100);     // futuramente utilizar parametrização
                    break;

                case DMN_CATEGORIA.AUTOPATROCINIO:
                    valorMargemCalculada = plano.UltimoSalario * (margem.TX_MANTENEDOR_SP.Value / 100);     // futuramente utilizar parametrização
                    break;

                case DMN_CATEGORIA.DIFERIDO:
                    valorMargemCalculada = plano.UltimoSalario * (margem.TX_MANTENEDOR_SP.Value / 100);     // futuramente utilizar parametrização
                    break;

                case DMN_CATEGORIA.EM_LICENCA:                                                      //Ativos, Autopatrocinados ou Em licença
                    valorMargemCalculada = plano.UltimoSalario * (margem.TX_ASSIST_BL.Value / 100); // futuramente utilizar parametrização
                    break;

                case DMN_CATEGORIA.ASSISTIDO:
                    w_vl_prest = w_vl_prest / w_fator_taxas;
                    //valorMargemCalculada = Convert.ToDecimal(GeneralFinanceFormulas.CalcPresentValue(percTaxa, przMax, w_vl_prest)) / w_fator_aplicado;

                    break;
                }
            }

            return(valorMargemCalculada);
        }