Bem vindos ao repositório! esta calculadora foi desenvolvida para obter um valor de salário líquido a partir do salário bruto e os principais descontos do salário (INSS e IRRF) também está atualizada de acordo com as regras de 2022 do ministério da economia
Visite o site
- Tecnologias utilizadas
- Como executar o projeto
- Como o cálculo é feito
- Estrutura dos dados e o algoritmo do cálculo
- Testes
- UI/UX
- React.js
- Sass
- Typescript
Primeiro faça o clone:
git clone https://github.com/thalysmcarrara/calculadora_salario_liquido.git
Instale as dependências:
npm install
por fim:
npm start
Todo o cálculo é baseado nas tabelas do INSS e do IRRF.
Em regras gerais a fórmula do cálculo é: salário líquido = salário bruto - INSS - IRRF - outros descontos(pensão alimentícia, dependentes, previdência privada)
.
Porém, existem algumas nuances a serem esclarecidas, tanto o cálculo do desconto do INSS quanto do IRRF são feitos de forma progressiva, ou seja, não se pode aplicar a alíquota direta em cima do salário bruto, o desconto é calculado de forma retroativa as faixas anteriores e descontos ao salário bruto desejado. Por exemplo:
Digamos que você receba um salário de R$ 5,000.00, você se enquadra na faixa dos 14% de alíquota, mas como já foi dito, não pode calcular de forma direta ( salário bruto - 14%
) o cálculo correto é:
Lembrando também que o teto máximo de contribuição para salários acima de R$ 7,087.22 é de R$ 828.39
O IRRF não é calculado em cima do salário bruto, e sim sobre o salário bruto - despesas(INSS, pensão, dependentes...)
e o resultado disso multiplicado pela alíquota menos a dedução. Imaginando um cenário onde você ganha R$ 5,000.00, seu desconto do INSS é de R$ 536,17 e você possui 1(um) dependente declarado, também paga pensão de R$ 600.
🚨 É importante saber que a cada dependente declarado desconta-se um valor de R$ 189,59
A conta fica:
Por fim temos:
Os dados das tabelas do INSS e IRRF foram transformados em arrays de objetos onde cada objeto corresponde a uma faixa salarial da tabela, no algoritmo cada faixa salarial é chamada de range
.
Pensando em modularização e desacoplamento a função calculateSalary()
foi dividida em outras 4 funções getINSSAliquot(), getINSSdiscount(), getIRRFAliquot()
e getIRRFdiscount()
.
A função calculateSalary()
também fica com a responsabilidade de formatar os dados para o formato de moeda antes de retornar, para reduzir a complexidade e poluição visual dos componentes, deixando com que o componente seja responsável apenas pela renderização.
Os testes estão divididos em 2 tipos, testes de interface usando a react-testing-library
e testes unitários usando apenas o Jest
para testar a regra de negócio.
Para executar os testes e verificar a cobertura dos mesmos basta rodar o comando:
npm test -- --coverage --watchAll
está com uma cobertura de quase 100%
Após rodar este comando será criado uma pasta chamada coverage
que contém um arquivo html que pode ser executado no navegador para ter mais detalhes sobre a cobertura.
Caso queira executar cada teste separadamente basta executar:
npm test src/__tests__/:diretorio-do-teste-desejado:
#exemplo
npm test src/__tests__/unitTests/inss.test.ts
Caso o usuário clique no botão de
CALCULAR
sem preencher o campo do salário é emitido um alerta.
Ao carregar a página o input de salário é focado