public void Deve_Remunerar_Linearmente_Proporcional_Ao_Percentual_Configurado_Para_a_Regra() { //Arrange Random rnd = new Random(); decimal multiplicador = rnd.Next(0, 100) / 100.0M; var valorHora = new Dinheiro(valor: 100M, moeda: Moeda.Real); Mock <ITabelaDePreco <int> > tabelaMock = GeraTabelaMock(valorHora); Profissional favorecido = LOMock.GeraProfissionalMock(id: 1, categoria: new Categoria(), nome: "LeMock"); IFavorecimento favorecimento = LOMock.GeraFavorecimentoMock(new[] { favorecido }); ParametrosDeRegraDeRemuneracao parametrosRegra1 = LOMock.GeraParametrosDeRegraDeRemuneracaoPorHoraMock(percentual: 100); ParametrosDeRegraDeRemuneracao parametrosRegra2 = LOMock.GeraParametrosDeRegraDeRemuneracaoPorHoraMock(percentual: 100 * multiplicador); IRegraDeRemuneracao regra1 = LOMock.ConstroiRegraPorHora(parametrosRegra1, favorecimento, tabelaMock.Object); IRegraDeRemuneracao regra2 = LOMock.ConstroiRegraPorHora(parametrosRegra2, favorecimento, tabelaMock.Object); Mock <IHoraPreProcessada> entregaMock = ConfiguraMockEntregaRemuneravel(5, favorecido); //Act IEnumerable <IRemuneracao> remuneracoesA = regra1.CalculaRemuneracoes(new IEntregaPreProcessada[] { entregaMock.Object }); IEnumerable <IRemuneracao> remuneracoesB = regra2.CalculaRemuneracoes(new IEntregaPreProcessada[] { entregaMock.Object }); IEnumerator <IRemuneracao> enumeratorA = remuneracoesA.GetEnumerator(); IRemuneracao RemuneracaoA = remuneracoesA.First(); IEnumerator <IRemuneracao> enumeratorB = remuneracoesB.GetEnumerator(); IRemuneracao RemuneracaoB = remuneracoesB.First(); //Assert Assert.AreEqual(multiplicador * RemuneracaoA.ValorAjustado.Valor, RemuneracaoB.ValorAjustado.Valor); }
public RegraDeRemuneracaoBD(TipoDeRegraBD tipo, IRegraDeRemuneracao regra) : this() { Vigencia = new PeriodoSimples(regra.Vigencia.Inicio.Date, regra.Vigencia.Fim.Date); Id = regra.Id; IdContrato = regra.Parametros.IdContrato; Nome = regra.NomePrincipal; this.tipo = tipo.Id; }
public async Task <int> InserirAsync(IRegraDeRemuneracao modelo) { var tipoDaRegra = TipoDeRegraBD.Get(modelo.Tipo.Id); RegraDeRemuneracaoBD regra = tipoDaRegra.ConverteDe(modelo); using (var context = _fabricaDeContextos.CriaContextoDe <RemuneracaoContext>(TipoDeConexao.Remuneracao)) { EntityEntry <RegraDeRemuneracaoBD> insertedObject = await context.Regras.AddAsync(regra); await context.SaveChangesAsync(); return(insertedObject.Entity.Id); } }
public Remuneracao(int id, Dinheiro valorARemunerar, int iDFavorecido, Competencia competencia, Vinculacao vinculacao, DateTime dataDaEntrega, bool foiFechada, string nomeFavorecido = null , IRegraDeRemuneracao regraGeradora = null) { Id = id; ValorAjustado = valorARemunerar; IdFavorecido = iDFavorecido; CompetenciaDaEntrega = competencia; RegraGeradora = regraGeradora; Vinculacao = vinculacao; DataDaEntrega = dataDaEntrega; FoiFechada = foiFechada; NomeFavorecido = nomeFavorecido; }
public async Task <IActionResult> GetObtemAsync(int id) { //context = await ConfiguraGerenciador(context); IRegraDeRemuneracao regra = null; try { regra = await _gerenciadorDeRequisicoes.RequisicaoObtemRegraAsync(id); } catch (Exception ex) { return(BadRequest(ex)); } return(Ok(regra)); }
public RegraDeRemuneracaoBD ConverterDe(IRegraDeRemuneracao regra) { if (!(regra is RegraPorHora)) { throw new ArgumentException("Este conversor converte apenas regras por hora"); } var regraPorHora = regra as RegraPorHora; RegraDeRemuneracaoBD regraConvertida = new RegraDeRemuneracaoBD(TipoDeRegraBD.Hora, regra); regraConvertida.Percentual = regraPorHora.PercentualARemunerar; regraConvertida.PercentualDesconto = regraPorHora.PercentualDesconto; regraConvertida.Parametros = JsonConvert.SerializeObject(regra.Parametros.ParametrosExtras); return(regraConvertida); }
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; }
public RegraDeRemuneracaoBD ConverterDe(IRegraDeRemuneracao regra) { if (!(regra is RegraFixaPorValor)) { throw new ArgumentException("Este conversor converte apenas regras fixas"); } var regraPorHora = regra as RegraFixaPorValor; RegraDeRemuneracaoBD regraConvertida = new RegraDeRemuneracaoBD(TipoDeRegraBD.Fixa, regra); regraConvertida.Parametros = JsonConvert.SerializeObject(regra.Parametros.ParametrosExtras); if (regraConvertida.Vigencia != null) { regraConvertida.Vigencia = new PeriodoSimples(regraConvertida.Vigencia.Inicio.Date, regraConvertida.Vigencia.Fim.Date); } return(regraConvertida); }
public void Deve_Remunerar_Favorecido_Conforme_Tabela() { //Arrange Profissional favorecido = LOMock.GeraProfissionalMock(id: 1, categoria: new Categoria(), nome: "LeMock"); IFavorecimento favorecimento = LOMock.GeraFavorecimentoMock(new[] { favorecido }); var valorHora = new Dinheiro(valor: 100M, moeda: Moeda.Real); Mock <ITabelaDePreco <int> > tabelaMock = GeraTabelaMock(valorHora); ParametrosDeRegraDeRemuneracao parametrosRegra = LOMock.GeraParametrosDeRegraDeRemuneracaoPorHoraMock(percentual: 100M); IRegraDeRemuneracao regra = LOMock.ConstroiRegraPorHora(parametrosRegra, favorecimento, tabelaMock.Object); Mock <IHoraPreProcessada> entrega = ConfiguraMockEntregaRemuneravel(5, favorecido); //Act IEnumerable <IRemuneracao> remuneracoes = regra.CalculaRemuneracoes((new IEntregaPreProcessada[] { entrega.Object })); IRemuneracao Remuneracao = remuneracoes.First(); //Assert Assert.AreEqual(favorecido.Id, Remuneracao.IdFavorecido); Assert.AreEqual(5 * valorHora.Valor, Remuneracao.ValorAjustado.Valor); }
public void Nao_Remunerar_Entregas_De_Funcionarios_Que_Nao_Sao_Favorecidos() { //Arrange Profissional favorecido = LOMock.GeraProfissionalMock(id: 1, categoria: new Categoria(), nome: "LeMock"); IFavorecimento favorecimento = LOMock.GeraFavorecimentoMock(new[] { favorecido }); Profissional naoFavorecido = LOMock.GeraProfissionalMock(id: 2, categoria: new Categoria(), nome: "LeNaoMock"); var valorHora = new Dinheiro(valor: 100M, moeda: Moeda.Real); Mock <ITabelaDePreco <int> > tabelaMock = GeraTabelaMock(valorHora); var parametrosRegra = LOMock.GeraParametrosDeRegraDeRemuneracaoPorHoraMock(); Mock <IHoraPreProcessada> entregaDeFavorecido = ConfiguraMockEntregaRemuneravel(5, favorecido); Mock <IHoraPreProcessada> entregaDeNaoFavorecido = ConfiguraMockEntregaRemuneravel(5, naoFavorecido); IRegraDeRemuneracao regra = LOMock.ConstroiRegraPorHora(parametrosRegra, favorecimento, tabelaMock.Object); //Act IEnumerable <IRemuneracao> remuneracoes = regra.CalculaRemuneracoes(new IEntregaPreProcessada[] { entregaDeFavorecido.Object, entregaDeNaoFavorecido.Object }); //Assert Assert.That(remuneracoes.Select(rem => rem.IdFavorecido), Has.No.Member(naoFavorecido.Id)); }
public RegraDeRemuneracaoBD ConverteDe(IRegraDeRemuneracao regra) { return(Conversor.ConverterDe(regra)); }