コード例 #1
0
        public static IEnumerable <Domain.Premio> ToEventoPremio(this IParcelaEmitida premioEmitido)
        {
            var evento = new EventoEmissaoPremio(premioEmitido.Identificador, premioEmitido.IdentificadorCorrelacao, premioEmitido.IdentificadorNegocio, premioEmitido.DataExecucaoEvento);

            premioEmitido.Parcelas.SafeForEach(premio => evento.AdicionarPremiosEmitidos(premio.ToPremio <Domain.Premio>()));

            return(evento.Premios);
        }
コード例 #2
0
        private static void MovimentoToProvisao(this IParcela premioEntrada, EventoEmissaoPremio eventoPremio)
        {
            var premioCadastrado = eventoPremio.Premios.First(p => p.ItemCertificadoApoliceId == long.Parse(premioEntrada.ParcelaId.IdentificadorExternoCobertura));

            Assertion.NotNull(premioCadastrado, "Não foi possível obter as coberturas para preencher as provisões a serem devolvidas no evento.").Validate();

            premioEntrada.Provisoes = premioCadastrado.MovimentosProvisao.ToList <IProvisao>();
        }
コード例 #3
0
        public async Task Processar(EventoEmissaoPremio evento)
        {
            foreach (var premio in evento.PremiosValidos)
            {
                await evento.ValidaMovimentacao(premio.ItemCertificadoApoliceId, premio.Numero);
            }

            await _eventos.Salvar(evento);
        }
コード例 #4
0
 private void CriaEventoEmissaoPremio(TipoRegimeFinanceiroEnum regimeFinanceiro, params TipoProvisaoEnum[] tiposProvisao)
 {
     _evento = EventoEmissaoPremioBuilder.UmEvento()
               .Padrao()
               .Com(PremioBuilder.Um()
                    .Com(CoberturaContratadaBuilder.Uma()
                         .ComRegimeFinanceiro((short)regimeFinanceiro)
                         .ComTiposProvisao(tiposProvisao)))
               .Build();
 }
コード例 #5
0
        public EventoEmissaoPremio CriarProvisao(EventoEmissaoPremio evento, CoberturaContratada cobertura)
        {
            if (cobertura.RegimeFinanceiroId.Equals(TipoRegimeFinanceiroEnum.ReparticaoSimples))
            {
                return(evento);
            }

            //Processo para gerar pmbac
            return(evento);
        }
コード例 #6
0
        public async Task <EventoPremio> Com(IParcelaEmitida message)
        {
            var evento = new EventoEmissaoPremio(message.Identificador, message.IdentificadorCorrelacao, message.IdentificadorNegocio, message.DataExecucaoEvento);

            foreach (var parcela in message.Parcelas)
            {
                evento.AdicionarPremio(await _premios.CriarPremio(_mapear.ToPremio(parcela), evento));
            }

            return(evento);
        }
コード例 #7
0
        public new void FixtureSetUp()
        {
            _eventos = GetInstance <IEventosBase <EventoEmissaoPremio> >();

            _eventoEmissao = EventoParcelaEmitidaBuilder
                             .UmEventoComDataExecucao(_identificador, IdentificadoresPadrao.Competencia)
                             .Padrao()
                             .Com(PremioBuilder.Um().Padrao()
                                  .Com(CoberturaContratadaBuilder.Uma()
                                       .ComRegimeFinanceiro((short)TipoRegimeFinanceiroEnum.Capitalizacao)
                                       .ComTiposProvisao(TipoProvisaoEnum.PMBAC, TipoProvisaoEnum.PEF)
                                       .ComId(_coberturaCadastrada.Id)
                                       .Com(HistoricoCoberturaContratadaBuilder.UmHistorico().ComId(_historicoId).ComDadosPadroes()))
                                  .Com(MovimentoProvisaoBuilder.UmBuilder().Padrao()
                                       .Com(ProvisaoCoberturaBuilder.UmBuilder())))
                             .Build();

            _eventos.Salvar(_eventoEmissao).Wait();
        }
コード例 #8
0
        public void DadoUmaEmissaoPremioDeveAdicionarListaProvisoes()
        {
            _emissaoPremio = ParcelaEmitidaBuilder.UmBuilder()
                             .ComIdentificador(IdentificadoresPadrao.Identificador)
                             .ComIdentificadorNegocio(IdentificadoresPadrao.IdentificadorNegocio)
                             .ComDataExecucaoEvento(IdentificadoresPadrao.DataExecucaoEvento)
                             .Com(ParcelaBuilder.UmBuilder().Padrao())
                             .Build();

            MovimentoProvisaoBuilder[] provisoes = { MovimentoProvisaoBuilder.UmBuilder().Padrao(), MovimentoProvisaoBuilder.UmBuilder().Padrao() };

            _evento = EventoParcelaEmitidaBuilder.UmEvento()
                      .Com(PremioBuilder.Um().Padrao()
                           .Com(provisoes)).Build();

            _emissaoPremio.Parcelas.ForEach(p => p.MovimentoToProvisao(_evento));

            var parcela = _emissaoPremio.Parcelas.First();

            Assert.That(provisoes.Count(), Is.EqualTo(_evento.Premios.First().MovimentosProvisao.Count()));
            Assert.That(provisoes.Count(), Is.EqualTo(parcela.Provisoes.Count()));
        }
コード例 #9
0
        public Domain.EventoPremio ToEvento(dynamic evento, DateTime DataExecucaoEvento)
        {
            EventoPremio eventopremio;

            switch ((TipoEventoEnum)evento.TipoEventoId)
            {
            case TipoEventoEnum.EmissaoPremio:
                eventopremio    = new EventoEmissaoPremio(evento.Identificador, evento.IdentificadorCorrelacao, evento.IdentificadorNegocio, DataExecucaoEvento);
                eventopremio.Id = evento.IDEvento;
                break;

            case TipoEventoEnum.ApropriacaoPremio:
                eventopremio    = new EventoApropriacaoPremio(evento.Identificador, evento.IdentificadorCorrelacao, evento.IdentificadorNegocio, DataExecucaoEvento);
                eventopremio.Id = evento.IDEvento;
                break;

            case TipoEventoEnum.DesapropriacaoPremio:
                eventopremio    = new EventoDesapropriacaoPremio(evento.Identificador, evento.IdentificadorCorrelacao, evento.IdentificadorNegocio, DataExecucaoEvento);
                eventopremio.Id = evento.IDEvento;
                break;

            case TipoEventoEnum.AjustePremio:
                eventopremio    = new EventoAjustePremio(evento.Identificador, evento.IdentificadorCorrelacao, evento.IdentificadorNegocio, DataExecucaoEvento);
                eventopremio.Id = evento.IDEvento;
                break;

            case TipoEventoEnum.PortabilidadePremio:
                eventopremio    = new EventoPortabilidadePremio(evento.Identificador, evento.IdentificadorCorrelacao, evento.IdentificadorNegocio, DataExecucaoEvento);
                eventopremio.Id = evento.IDEvento;
                break;

            default:
                eventopremio = null;
                break;
            }

            return(eventopremio);
        }
コード例 #10
0
 public static void AdicionarProvisoes(this IParcelaEmitida premioEmitido, EventoEmissaoPremio eventoPremio)
 {
     premioEmitido.Parcelas.SafeForEach(p => MovimentoToProvisao(p, eventoPremio));
 }
コード例 #11
0
        public static void Validar(this EventoEmissaoPremio evento, CoberturaContratada cobertura)
        {
            var coberturaValidate = Assertion.NotNull(cobertura, "O Evento não possui cobertura cadastrada.");

            coberturaValidate.Validate();
        }