Skip to content

Instantly share code, notes, and snippets.

@virgiliojr94
Created April 12, 2024 21:04
Show Gist options
  • Save virgiliojr94/cdff7266225fb8e7e672db89240a2810 to your computer and use it in GitHub Desktop.
Save virgiliojr94/cdff7266225fb8e7e672db89240a2810 to your computer and use it in GitHub Desktop.

Desafio - API de Contracheques [Off] [Junior] [Pleno]

Nível: Junior, Pleno
Tipo: Off
Duração: Máximo 10 dias

Descrição do Desafio

Na empresa existe um setor responsável pela contabilidade e pagamento de seus funcionários, entretanto, a parte contábil é realizada por uma consultoria externa. Gerir essas informações é algo bem importante e, dado que há uma confidencialidade no tráfego desses dados e também há uma possibilidade de economizar tirando essa consultoria do jogo, você foi escalado para criar uma aplicação responsável por criar o extrato da folha salarial dos funcionários. Esse extrato deve expôr o salário líquido do funcionário e todos os seus descontos discriminados.

Especificação técnica do Desafio

A API tem como principal entidade o Funcionário, ele possui:

  • Id
  • Nome
  • Sobrenome
  • Documento (CPF válido)
  • Setor
  • Salário bruto
  • Data de admissão
  • Possui desconto no plano de saúde (bool)
  • Possui desconto no plano dental (bool)
  • Possui desconto de vale transporte (bool)

Os descontos que o funcionário possui são:

  1. INSS (em cima do salário bruto):

    • Salário de Contribuição
    • Alíquota INSS
      • até 1.045,00: 7,5%
      • de 10.045,01 até 2.089,60: 9%
      • de 2.089,61 até 3.134,40: 12%
      • de 3.134,41 até 6.101,06: 14%
  2. Imposto de renda retido na fonte (em cima do salário bruto):

    • Base de cálculo (R$)
    • Alíquota (%)
    • Parcela a deduzir do IRPF (R$)
      • Até 1.903,98: -
      • De 1.903,90 até 2.826,65: 7,5 (142,80)
      • De 2.826,66 até 3.751,05: 15 (354,80)
      • De 3.751,06 até 4.664,68: 22,5 (636,13)
      • Acima de 4.664,68: 27,5 (869,36)
  3. Plano de saúde (R$ 10 fixos em cima do salário bruto, se o funcionário optar pelo plano)

  4. Plano dental (R$ 5 fixos em cima do salário bruto, se o funcionário optar pelo plano)

  5. Vale transporte (6% em cima do salário bruto, se o funcionário optar pelo vale transporte) (Caso o funcionário ganhe menos que R$ 1500, não há esse desconto)

  6. FGTS (8% em cima do salário bruto)

Interações possíveis com um funcionário

  • Deve ser possível fazer GET em um funcionário dado o seu Id, retornando a entidade
  • Deve ser possível inserir um funcionário dados todos os seus dados, exceto Id, que deve ser gerado automaticamente. Esse Id deve vir na resposta da criação do funcionário
  • Extrato de contracheque:
    • Deve ser possível expor via endpoint o extrato de contracheque dado o Id de um funcionário
    • Não há necessidade de persistir os dados do contracheque, ele pode ser construído em tempo de execução
    • O contracheque deve ser capaz de expor:
      • Mês de referência
      • Lista de lançamentos
      • Salário bruto
      • Total de descontos (Valor negativo)
      • Salário líquido
    • Um lançamento é composto da seguinte maneira:
      • Tipo (Desconto, remuneração)
      • Valor
      • Descrição (Vale transporte, INSS, IRRF, etc)

Requisitos Técnicos

  • Utilizar .NET Core em sua última versão para o desenvolvimento;
  • Utilizar todo seu conhecimento em orientação a objetos, SOLID e Clean Code;
  • Faça um bom uso de recursos RESTful, rotas, verbos, status codes e afins;
  • Todo ambiente deve ser containerizado (Docker) e preferencialmente executado com todos serviços dependentes em um único comando;
  • Para o armazenamento das informações utilizar qualquer banco SQL ou NoSQL da sua preferência;
  • Testes são muito importantes. Crie alguns casos de testes unitários (com uso de Mock);
  • Use frameworks com sabedoria, sem poluir seu código;
  • Ter um repositório organizado, documentação e fácil de utilizar, um ou poucos comandos para levantar todo ambiente e suas dependências;
  • O repositório deve ser público e ter integração com qualquer serviço de CI (seja Azure DevOps, AppVeyor, CircleCI, etc);
  • A aplicação tem que estar funcional e cumprir os requisitos que foram apresentados no desafio;
  • Não é necessária qualquer implementação de interface front-end. Isso não será avaliado! Coloque seus esforços em deixar seu backend bem modelado.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment