public void Entrega_De_Favorecido_Deve_Ser_Considerada_Entrega_De_Beneficiario()
        {
            //Arrange
            Favorecido            favorecido = _favorecidos.ElementAt(new Random().Next(_favorecidos.Count() - 1));
            IEntregaPreProcessada entrega    = LOMock.ConfiguraMockEntrega(favorecido.Profissional, DateTime.Now);

            foreach (var favorecimento in _favorecimentos)
            {
                //Assert
                Assert.DoesNotThrow(() => favorecimento.BeneficiarioDaEntregaEhFavorecido(entrega), "{0} lança uma exceção ao tentar checar se a entrega é de beneficiário", favorecimento.Tipo.Id);
                Assert.IsTrue(favorecimento.BeneficiarioDaEntregaEhFavorecido(entrega), "{0} não define corretamente se a entrega é de beneficiário", favorecimento.Tipo.Id);
            }
        }
Exemplo n.º 2
0
        public Remuneracao(IEntregaPreProcessada entrega, IRegraDeRemuneracao regra, Vinculacao historicoDeVinculacao, Dinheiro valorARemunerar)
        {
            if (entrega is IHoraRecebidaPreProcessada)
            {
                DataDoFaturamento        = ((IHoraRecebidaPreProcessada)entrega).Faturamento.DataFaturamento;
                CompetenciaDoFaturamento = new CompetenciaMensal(DataDoFaturamento);
            }

            IdFavorecido         = entrega.Beneficiario.Id;
            NomeFavorecido       = entrega.Beneficiario.Nome;
            ValorBruto           = valorARemunerar;
            Vinculacao           = historicoDeVinculacao;
            RegraGeradora        = regra;
            DataDaEntrega        = entrega.DataDaEfetivacao;
            CompetenciaDaEntrega = new CompetenciaMensal(entrega.DataDaEfetivacao);
            IdEntrega            = entrega.Id;
            TipoDaEntrega        = entrega.Tipo;
        }
        protected virtual IEnumerable <IEntregaPreProcessada> ConverteEntregaEmRemuneravel(EntregaDeHoraRecebida entrega)
        {
            IEnumerable <IEntregaPreProcessada> remuneraveis = entrega.Procedimentos.Select((proc) =>
            {
                decimal percentualPermitido       = 100.0M;
                IEnumerable <decimal> percentuais = ObtemModificacoesDasAcoesFeitasNoProcedimento(proc);

                percentualPermitido = proc.PercentualPermitido * (percentuais.Sum(p => p / 100.0M));

                IEntregaPreProcessada remuneravel = entrega.Tipo.CriarEntregaPreProcessada(entrega, percentualPermitido, proc.DataDaOcorrencia, entrega.Competencia);

                remuneravel.Vinculacao.Adicionar(new Vinculo(Constantes.HISTORICO_TIPO_PROCEDIMENTO, proc.Id, proc.Tipo.ToString()));

                return(remuneravel);
            });

            var remun = remuneraveis.ToList();

            return(remuneraveis);
        }