private static ParametrosCalculoPmbac ObterParametrosCalculoPmbac(CoberturaContratada cobertura, DateTime dataExecucao, decimal valorProvisaoAnterior)
 {
     return(new ParametrosCalculoPmbac()
     {
         Competencia = dataExecucao,
         ContribuicaoMensal = cobertura.Historico?.ValorContribuicao,
         DataAssinatura = cobertura.DataAssinatura,
         DataInicioVigencia = cobertura.DataInicioVigencia,
         DataNascimentoCliente = cobertura.DataNascimento,
         IdClasseRisco = (cobertura.ClasseRiscoId != null && cobertura.ClasseRiscoId != 0) ? (short)cobertura.ClasseRiscoId : (short?)null,
         IdItemProduto = cobertura.ItemProdutoId,
         IdSexoSegurado = cobertura.Sexo,
         TipoFormaContratacaoId = (short)cobertura.TipoFormaContratacaoId,
         TipoRendaId = (short)cobertura.TipoRendaId.GetValueOrDefault(),
         Identificador = cobertura.ItemCertificadoApoliceId,
         CapitalSegurado = cobertura.Historico?.ValorCapital,
         Periodicidade = ObterPeriodicidade(cobertura.Historico?.PeriodicidadeId),
         Fracionamento = (int)ObterPeriodicidade(cobertura.Historico?.PeriodicidadeId),
         PrazoPagamento = (short)cobertura.PrazoPagamentoEmAnos.GetValueOrDefault(),
         PrazoDiferimento = cobertura.PrazoPagamentoEmAnos,
         PrazoDecrescimo = cobertura.PrazoDecrescimoEmAnos != null
             ? (short)cobertura.PrazoDecrescimoEmAnos
             : (short?)null,
         ValorRenda = cobertura.Historico?.ValorBeneficio,
         DataNascimentoFilho = cobertura.Historico?.DataNascimentoBeneficiario,
         NumeroContribuicoes = cobertura.NumeroContribuicao,
         IdadePagamentoAntecipado = cobertura.DataNascimento.Year + cobertura.PrazoPagamentoEmAnos.GetValueOrDefault(),
         DataUltimaCorrecaoMonetaria = cobertura.DataUltimaCorrecaoMonetaria,
         ValorProvisaoAnterior = valorProvisaoAnterior,
         DataSaldamento = cobertura.DataSaldamento
     });
 }
 public CalculadorEvento(CoberturaContratada coberturaContratada, EventoOperacional eventooperacional, ICalculoFacade calculo, IProvisoes provisao)
 {
     _coberturaContratada = coberturaContratada;
     _eventooperacional   = eventooperacional;
     _calculo             = calculo;
     _provisao            = provisao;
 }
Exemple #3
0
        public async Task Salvar(CoberturaContratada dto)
        {
            const string proc = "sp_CriarCoberturaContratada";

            var objeto = CarregarParametros(dto);

            dto.Id = await CreateCommand.ExecuteScalarAsync <Guid>(proc, objeto, commandType : CommandType.StoredProcedure);
        }
Exemple #4
0
        public CalculadorProvisaoPMBACProvider(CoberturaContratada coberturacontratada, ICalculoFacade calculo, EventoOperacional eventooperacional, IProvisoes provisao)
        {
            parametrosProvisaoCalculo = new ParametrosProvisaoCalculo();
            parametrosProvisaoCalculo.ItemCertificadoApoliceId = coberturacontratada.ItemCertificadoApoliceId;
            parametrosProvisaoCalculo.tipoprovisao             = Domain.Enum.TipoProvisaoEnum.PMBAC;

            Calculadores.Add(new Premio.Calculadores.CalculadorProvisaoMatematicaBeneficioAConceder(coberturacontratada, calculo, eventooperacional, parametrosProvisaoCalculo, provisao));
        }
Exemple #5
0
 public CalculadorProvisaoMatematicaBeneficioAConceder(CoberturaContratada coberturacontratada, ICalculoFacade calculo, EventoOperacional eventooperacional, ParametrosProvisaoCalculo parametrosProvisaoCalculo, IProvisoes provisao)
 {
     _coberturacontratada       = coberturacontratada;
     _calculo                   = calculo;
     _eventooperacional         = eventooperacional;
     _parametrosProvisaoCalculo = parametrosProvisaoCalculo;
     _provisao                  = provisao;
 }
        public EventoEmissaoPremio CriarProvisao(EventoEmissaoPremio evento, CoberturaContratada cobertura)
        {
            if (cobertura.RegimeFinanceiroId.Equals(TipoRegimeFinanceiroEnum.ReparticaoSimples))
            {
                return(evento);
            }

            //Processo para gerar pmbac
            return(evento);
        }
        private async Task SalvarCobertura(CoberturaContratada cobertura)
        {
            await _coberturaDao.Salvar(cobertura);

            if (cobertura.Historico != null)
            {
                cobertura.Historico.AdicionarCobertura(cobertura);
                cobertura.Historico.InformaStatus(StatusCobertura.StatusCoberturaEnum.Activa, DateTime.Now);
                await _historicoDao.Salvar(cobertura.Historico);
            }
        }
Exemple #8
0
        private async Task <HistoricoCoberturaContratada> RetornaHistoricoCoberturaPeloIdentificador(string ItemCertificadoApoliceId, decimal valorbeneficio, decimal valorcapital, StatusCobertura.StatusCoberturaEnum statuscobertura)
        {
            itemCertificadoApoliceId = Convert.ToInt64(ItemCertificadoApoliceId);
            coberturacontratada      = await _cobertura.ObterPorItemCertificado(itemCertificadoApoliceId);

            coberturacontratada.Historico.ValorBeneficio = valorbeneficio;
            coberturacontratada.Historico.ValorCapital   = valorcapital;
            coberturacontratada.Historico.InformaStatus(statuscobertura, DateTime.Now);
            coberturacontratada.Historico.AdicionarCobertura(coberturacontratada);
            return(coberturacontratada.Historico);
        }
        public async Task Validar(CoberturaContratada cobertura)
        {
            var existe = await _coberturas.Contem(cobertura.ItemCertificadoApoliceId);

            Assertion.IsFalse(existe, $"O identificador externo {cobertura.ItemCertificadoApoliceId} já foi implantado anteriormente.").Validate();

            if (cobertura.RegimeFinanceiroId.Equals((short)TipoRegimeFinanceiroEnum.Capitalizacao))
            {
                _facade.ValidarDadosCalculoPMBAC(cobertura, new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1));
            }
        }
Exemple #10
0
        public void EntaoUmaCoberturaContratadaDeveConter(Table param)
        {
            var saida = param.CreateSet <ImplantacaoParam>().First();

            _coberturas = InstanceFactory.Resolve <ICoberturas>();

            _coberturaDto = _coberturas.ObterPorItemCertificado(_itemCertificadoApoliceId).Result;

            Assert.That(_param.IdExterno, Is.EqualTo(_coberturaDto.ItemCertificadoApoliceId));
            Assert.That(_param.ItemProdutoId, Is.EqualTo(_coberturaDto.ItemProdutoId));
            Assert.That(_param.DataInicioVigencia, Is.EqualTo(_coberturaDto.DataInicioVigencia));
            Assert.That(_param.ClasseRiscoId, Is.EqualTo(_coberturaDto.ClasseRiscoId));
            Assert.That(_param.TipoFormaContratacaoId, Is.EqualTo(_coberturaDto.TipoFormaContratacaoId));
            Assert.That(_param.TipoRendaId, Is.EqualTo(_coberturaDto.TipoRendaId));
            Assert.That(_param.InscricaoId, Is.EqualTo(_coberturaDto.InscricaoId));
            Assert.That(_param.Matricula, Is.EqualTo(_coberturaDto.Matricula));
        }
        public static IEnumerable <CoberturaContratada> ObterCoberturasDaProposta(this IProposta proposta)
        {
            var coberturas = new List <CoberturaContratada>();

            foreach (var produto in proposta.Produtos)
            {
                foreach (var cobertura in produto.Coberturas)
                {
                    var coberturaContratada = new CoberturaContratada(long.Parse(cobertura.IdentificadorExterno))
                    {
                        InscricaoId        = produto.InscricaoCertificado,
                        ItemProdutoId      = cobertura.CodigoItemProduto,
                        DataInicioVigencia = cobertura.InicioVigencia,
                        DataAssinatura     = proposta.DataAssinatura,
                        DataNascimento     = proposta.Proponente.DataNascimento,
                        Matricula          = proposta.Proponente.Matricula,
                        Sexo = proposta.Proponente.Sexo,
                        TipoFormaContratacaoId = (int)cobertura.Contratacao?.TipoFormaContratacao,
                        ProdutoId             = produto.Codigo,
                        ClasseRiscoId         = cobertura.ClasseRisco,
                        TipoRendaId           = (int)cobertura.Contratacao?.TipoDeRenda,
                        DataFimVigencia       = cobertura.FimVigencia,
                        PrazoPagamentoEmAnos  = cobertura.Prazos?.PagamentoEmAnos,
                        PrazoCoberturaEmAnos  = cobertura.Prazos?.CoberturaEmAnos,
                        PrazoDecrescimoEmAnos = cobertura.Prazos?.DecrescimoEmAnos,
                    };

                    if (produto.Matricula != proposta.Proponente.Matricula && proposta.Proponente.Conjuge != null)
                    {
                        if (produto.Matricula == proposta.Proponente.Conjuge.Matricula)
                        {
                            coberturaContratada.Matricula      = proposta.Proponente.Conjuge.Matricula;
                            coberturaContratada.Sexo           = proposta.Proponente.Conjuge.Sexo;
                            coberturaContratada.DataNascimento = proposta.Proponente.Conjuge.DataNascimento;
                        }
                    }

                    coberturaContratada.Historico = ObterHistorico(coberturaContratada, produto.Beneficiarios, proposta.DadosPagamento?.Periodicidade,
                                                                   cobertura.ValorBeneficio, cobertura.ValorCapital, cobertura.ValorContribuicao, proposta.DataImplantacao);

                    coberturas.Add(coberturaContratada);
                }
            }

            return(coberturas);
        }
 public static IEnumerable <HistoricoCoberturaContratada> ToHistoricoCoberturas(this IProposta proposta)
 {
     foreach (var produto in proposta.Produtos)
     {
         var beneficiario = produto.Beneficiarios?.OrderByDescending(d => d.DataNascimento).FirstOrDefault();
         foreach (var cobertura in produto.Coberturas)
         {
             var cobContratada = new CoberturaContratada(Convert.ToInt64(cobertura.IdentificadorExterno));
             yield return(new HistoricoCoberturaContratada(cobContratada)
             {
                 SexoBeneficiario = beneficiario?.Sexo,
                 DataNascimentoBeneficiario = beneficiario?.DataNascimento,
                 PeriodicidadeId = (short)proposta.DadosPagamento.Periodicidade
             });
         }
     }
 }
        public void FixtureSetUp()
        {
            _eventoImplantacao = EventoImplantacaoBuilder.UmEvento(_identificador)
                                 .Com(CoberturaContratadaBuilder.Uma().ComPrazo(5, 1, 1)
                                      .Com(DadosProdutoBuilder.Um().Padrao()).Build())
                                 .Build();

            _eventos = GetInstance <IEventosBase <EventoImplantacao> >();

            _coberturas = GetInstance <ICoberturas>();

            _eventos.Salvar(_eventoImplantacao).Wait();

            _cobertura = _eventoImplantacao.Coberturas.First();

            _historicoId = _cobertura.Historico.Id;

            _coberturaCadastrada = _coberturas.ObterPorItemCertificado(_cobertura.ItemCertificadoApoliceId).Result;
        }
        public static HistoricoCoberturaContratada ObterHistorico(CoberturaContratada coberturaContratada,
                                                                  List <IBeneficiario> beneficiarios, Periodicidade?periodicidade,
                                                                  decimal valorBeneficio, decimal valorCapital, decimal valorContribuicao, DateTime dataImplantacao)
        {
            var beneficiarioMaisNovo = beneficiarios?.OrderByDescending(x => x.DataNascimento).FirstOrDefault();

            var dto = new HistoricoCoberturaContratada(coberturaContratada)
            {
                SexoBeneficiario           = beneficiarioMaisNovo?.Sexo,
                DataNascimentoBeneficiario = beneficiarioMaisNovo?.DataNascimento,
                PeriodicidadeId            = (int)periodicidade.GetValueOrDefault(),
                ValorBeneficio             = valorBeneficio,
                ValorCapital      = valorCapital,
                ValorContribuicao = valorContribuicao
            };

            dto.InformaStatus(StatusCobertura.StatusCoberturaEnum.Activa, dataImplantacao);

            return(dto);
        }
Exemple #15
0
        public static HistoricoCoberturaContratada ObterHistorico(CoberturaContratada coberturaContratada,
                                                                  List <IBeneficiario> beneficiarios, Periodicidade?periodicidade,
                                                                  decimal valorBeneficio, decimal valorCapital, decimal valorContribuicao)
        {
            var dto = new HistoricoCoberturaContratada(coberturaContratada);

            var beneficiarioMaisNovo = beneficiarios?.OrderByDescending(x => x.DataNascimento).FirstOrDefault();

            dto.SexoBeneficiario           = beneficiarioMaisNovo?.Sexo;
            dto.DataNascimentoBeneficiario = beneficiarioMaisNovo?.DataNascimento;

            if (periodicidade != null)
            {
                dto.PeriodicidadeId = (int)periodicidade;
            }

            dto.ValorBeneficio    = valorBeneficio;
            dto.ValorCapital      = valorCapital;
            dto.ValorContribuicao = valorContribuicao;

            return(dto);
        }
Exemple #16
0
 public object CarregarParametros(CoberturaContratada dto)
 {
     return(new
     {
         dto.EventoId,
         dto.InscricaoId,
         dto.ItemCertificadoApoliceId,
         dto.ItemProdutoId,
         dto.ClasseRiscoId,
         dto.TipoFormaContratacaoId,
         dto.TipoRendaId,
         dto.DataNascimento,
         dto.Sexo,
         CodigoProduto = dto.ProdutoId,
         dto.Matricula,
         dto.DataInicioVigencia,
         dto.DataFimVigencia,
         dto.DataAssinatura,
         dto.IndiceBeneficioId,
         IndiceContribuicaoId = dto.IndiceContribuicaoId.GetValueOrDefault(),
         dto.ModalidadeCoberturaId,
         dto.ProdutoId,
         dto.RegimeFinanceiroId,
         dto.TipoItemProdutoId,
         dto.NomeProduto,
         dto.NumeroBeneficioSusep,
         dto.NumeroProcessoSusep,
         dto.PlanoFipSusep,
         dto.TipoProvisoes,
         dto.PermiteResgateParcial,
         dto.PrazoCoberturaEmAnos,
         dto.PrazoDecrescimoEmAnos,
         dto.PrazoPagamentoEmAnos,
         dto.NumeroContribuicoesInicial
     });
 }
 public static ProvisaoCoberturaBuilder UmBuilder(CoberturaContratada cobertura, TipoProvisaoEnum tipoProvisao)
 {
     return(new ProvisaoCoberturaBuilder(cobertura, (short)tipoProvisao));
 }
 public void FixtureSetUp()
 {
     _retorno        = new CoberturaContratada();
     _mockRepository = MockRepository.GenerateMock <ICoberturaContratadaRepository>();
     _controller     = new CoberturaController(_mockRepository);
 }
 public CoberturaContext(CoberturaContratada cobertura)
 {
     Data     = cobertura;
     Instance = null;
 }
        public static void Validar(this EventoEmissaoPremio evento, CoberturaContratada cobertura)
        {
            var coberturaValidate = Assertion.NotNull(cobertura, "O Evento não possui cobertura cadastrada.");

            coberturaValidate.Validate();
        }
Exemple #21
0
 private static ParametrosCalculoPmbac ObterParametrosCalculoPmbac(CoberturaContratada cobertura, DateTime dataExecucao)
 {
     return(ObterParametrosCalculoPmbac(cobertura, dataExecucao, default(decimal)));
 }
Exemple #22
0
 public ProvisaoMatematicaBeneficioAConceder CalcularPMBAC(CoberturaContratada cobertura, DateTime dataExecucao, decimal valorProvisaoAnterior)
 {
     return(MapearPMBAC(_calculoService.CalcularPmbac(ObterParametrosCalculoPmbac(cobertura, dataExecucao, valorProvisaoAnterior))));
 }
Exemple #23
0
 public virtual void ValidarDadosCalculoPMBAC(CoberturaContratada cobertura, DateTime dataExecucao)
 {
     _calculoService.CalcularPmbac(ObterParametrosCalculoPmbac(cobertura, dataExecucao));
 }
Exemple #24
0
 public static ChaveProduto ChaveProduto(this CoberturaContratada cob)
 {
     return(new ChaveProduto(cob.ItemProdutoId, cob.TipoFormaContratacaoId, cob.TipoRendaId, cob.DataAssinatura));
 }
 private ProvisaoCoberturaBuilder(CoberturaContratada cobertura, short tipoProvisaoId)
 {
     Instance = new ProvisaoCobertura(cobertura, tipoProvisaoId);
 }
Exemple #26
0
 public CalculadorEventoCobertura(CoberturaContratada coberturaContratada, EventoCobertura eventooperacional, ICalculoFacade calculo, IProvisoes provisao) : base(coberturaContratada, eventooperacional, calculo, provisao)
 {
     eventooperacional.MovimentosProvisao = movimentosProvisao;
 }
Exemple #27
0
 private HistoricoCoberturaContratadaBuilder(CoberturaContratada cobertura)
 {
     Instance = new HistoricoCoberturaContratada(cobertura);
 }