inss_calculator 0.3.2 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +10 -9
- data/README.md +35 -1
- data/lib/inss_calculator/discount_previdence_calculator.rb +1 -0
- data/lib/inss_calculator/eigth_discount_calculator.rb +35 -0
- data/lib/inss_calculator/fifth_discount_calculator.rb +35 -0
- data/lib/inss_calculator/public_inss_calculator.rb +24 -0
- data/lib/inss_calculator/seventh_discount_calculator.rb +35 -0
- data/lib/inss_calculator/sixth_discount_calculator.rb +35 -0
- data/lib/inss_calculator/version.rb +1 -1
- data/lib/inss_calculator.rb +17 -0
- metadata +8 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a05163c92393153a574007ef8c0f932f0f203d94563ba4757c94b8250ae019b5
|
4
|
+
data.tar.gz: cc17641c475339eb14d34b8a66d6f691d5a16afc00773c2da021b742249a5d1c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1dbe2a8d65e5c6c6bc96fc31a5bdafa456b5cb216bb8758b0076ba8651e5b44e73de7355a9bfd84b582d285c3be1b345aab4255838942a1739fb5045ad5c4da1
|
7
|
+
data.tar.gz: 42a4e83b651b23f20108dd414a93ac2ec308a8e03e686e13ab1c61f5b24c8e534d734ce5b55658a82c0e33a3634e428d63c57670091d0db3a87e893bed7c5f32
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
inss_calculator (0.3.
|
4
|
+
inss_calculator (0.3.2)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
@@ -10,15 +10,15 @@ GEM
|
|
10
10
|
diff-lcs (1.5.1)
|
11
11
|
json (2.7.2)
|
12
12
|
language_server-protocol (3.17.0.3)
|
13
|
-
parallel (1.
|
14
|
-
parser (3.3.
|
13
|
+
parallel (1.26.0)
|
14
|
+
parser (3.3.4.2)
|
15
15
|
ast (~> 2.4.1)
|
16
16
|
racc
|
17
|
-
racc (1.8.
|
17
|
+
racc (1.8.1)
|
18
18
|
rainbow (3.1.1)
|
19
19
|
rake (13.2.1)
|
20
20
|
regexp_parser (2.9.2)
|
21
|
-
rexml (3.3.
|
21
|
+
rexml (3.3.4)
|
22
22
|
strscan
|
23
23
|
rspec (3.13.0)
|
24
24
|
rspec-core (~> 3.13.0)
|
@@ -33,24 +33,25 @@ GEM
|
|
33
33
|
diff-lcs (>= 1.2.0, < 2.0)
|
34
34
|
rspec-support (~> 3.13.0)
|
35
35
|
rspec-support (3.13.1)
|
36
|
-
rubocop (1.
|
36
|
+
rubocop (1.65.1)
|
37
37
|
json (~> 2.3)
|
38
38
|
language_server-protocol (>= 3.17.0)
|
39
39
|
parallel (~> 1.10)
|
40
40
|
parser (>= 3.3.0.2)
|
41
41
|
rainbow (>= 2.2.2, < 4.0)
|
42
|
-
regexp_parser (>=
|
42
|
+
regexp_parser (>= 2.4, < 3.0)
|
43
43
|
rexml (>= 3.2.5, < 4.0)
|
44
44
|
rubocop-ast (>= 1.31.1, < 2.0)
|
45
45
|
ruby-progressbar (~> 1.7)
|
46
46
|
unicode-display_width (>= 2.4.0, < 3.0)
|
47
|
-
rubocop-ast (1.
|
47
|
+
rubocop-ast (1.32.0)
|
48
48
|
parser (>= 3.3.1.0)
|
49
49
|
ruby-progressbar (1.13.0)
|
50
50
|
strscan (3.1.0)
|
51
51
|
unicode-display_width (2.5.0)
|
52
52
|
|
53
53
|
PLATFORMS
|
54
|
+
ruby
|
54
55
|
x86_64-linux
|
55
56
|
|
56
57
|
DEPENDENCIES
|
@@ -60,4 +61,4 @@ DEPENDENCIES
|
|
60
61
|
rubocop (~> 1.21)
|
61
62
|
|
62
63
|
BUNDLED WITH
|
63
|
-
2.
|
64
|
+
2.5.17
|
data/README.md
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
# InssCalculator
|
2
2
|
|
3
|
-
Calculadora do desconto do INSS sobre o salário bruto 2024
|
3
|
+
Calculadora do desconto do INSS sobre o salário bruto 2024 de acordo com a [Portaria Inter Ministerial
|
4
|
+
número 2 de 11 de Janeiro de 2024](https://www.in.gov.br/en/web/dou/-/portaria-interministerial-mps/mf-n-2-de-11-de-janeiro-de-2024-537035232).
|
5
|
+
|
6
|
+
Esta mesma portaria discorre tanto sobre a contribuição do trabalhador do setor público quanto do setor privado.
|
4
7
|
|
5
8
|
## Instalation
|
6
9
|
|
@@ -12,12 +15,28 @@ Não conhecia [esse comando?](https://bundler.io/v2.5/man/bundle-add.1.html) Ele
|
|
12
15
|
|
13
16
|
## Usage
|
14
17
|
|
18
|
+
Para calcular a contribuição do trabalhador no setor privado:
|
19
|
+
|
15
20
|
```
|
16
21
|
gross_salary = 3000
|
17
22
|
calculator = InssCalculator::DiscountPrevidenceCalculator.new(gross_salary)
|
18
23
|
calculator.contribution => 258.81
|
19
24
|
calculator.salary => 3000.0
|
20
25
|
calculator.net_salary => 2741.19
|
26
|
+
|
27
|
+
```
|
28
|
+
Para calcular a contribuição do trabalhador no setor público:
|
29
|
+
|
30
|
+
```
|
31
|
+
|
32
|
+
gross_salary = 52000.54
|
33
|
+
calculator = InssCalculator::PublicInssCalculator.new(gross_salary)
|
34
|
+
calculator.contribution => 8726.63
|
35
|
+
calculator.salary => 52000.54
|
36
|
+
calculator.net_salary => 43273.91
|
37
|
+
|
38
|
+
```
|
39
|
+
```
|
21
40
|
```
|
22
41
|
### Precisas realizar uma query ao Banco de Dados por grupo de faixa salarial?
|
23
42
|
|
@@ -36,6 +55,21 @@ InssCalculator providencia as seguintes constantes:
|
|
36
55
|
InssCalculator::FOURTH_SALARY_BASE = 4000.04
|
37
56
|
InssCalculator::FOURTH_SALARY_LIMIT = 7786.02
|
38
57
|
|
58
|
+
# Abaixo as bases e os limites do setor público
|
59
|
+
|
60
|
+
InssCalculator::FIFTH_SALARY_BASE = 7786.03
|
61
|
+
InssCalculator::FIFTH_SALARY_LIMIT = 13_333.48
|
62
|
+
|
63
|
+
InssCalculator::SIXTH_SALARY_BASE = 13_333.49
|
64
|
+
InssCalculator::SIXTH_SALARY_LIMIT = 26_666.94
|
65
|
+
|
66
|
+
InssCalculator::SEVENTH_SALARY_BASE = 26_666.95
|
67
|
+
InssCalculator::SEVENTH_SALARY_LIMIT = 52_000.54
|
68
|
+
|
69
|
+
InssCalculator::EIGTH_SALARY_BASE = 52_000.55
|
70
|
+
InssCalculator::EIGTH_SALARY_LIMIT = Float::INFINITY
|
71
|
+
|
72
|
+
|
39
73
|
```
|
40
74
|
|
41
75
|
Desta forma, uma requisição que busca somente a primeira faixa salarial seria:
|
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
module InssCalculator
|
4
4
|
# Based on this insecure protocoll site https://www.coalize.com.br/calculadora-de-inss
|
5
|
+
# Check also the official law https://www.in.gov.br/en/web/dou/-/portaria-interministerial-mps/mf-n-2-de-11-de-janeiro-de-2024-537035232
|
5
6
|
class DiscountPrevidenceCalculator
|
6
7
|
attr_reader :salary
|
7
8
|
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module InssCalculator
|
4
|
+
# EigthDiscountCalculator calculates between its range limit
|
5
|
+
# As the limit is infinity, it always eacrease the contribution.
|
6
|
+
class EigthDiscountCalculator < DiscountCalculatorBase
|
7
|
+
QUOTATION = 0.22
|
8
|
+
|
9
|
+
def contribution
|
10
|
+
return NO_CONTRIBUTION if salary <= salary_base
|
11
|
+
|
12
|
+
return full_contribution if salary > salary_limit
|
13
|
+
|
14
|
+
calculate_contribution
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def calculate_contribution
|
20
|
+
((salary - salary_base) * QUOTATION).truncate(2)
|
21
|
+
end
|
22
|
+
|
23
|
+
def full_contribution
|
24
|
+
((salary_limit - salary_base) * QUOTATION).truncate(2)
|
25
|
+
end
|
26
|
+
|
27
|
+
def salary_limit
|
28
|
+
InssCalculator::EIGTH_SALARY_LIMIT
|
29
|
+
end
|
30
|
+
|
31
|
+
def salary_base
|
32
|
+
InssCalculator::SEVENTH_SALARY_LIMIT
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module InssCalculator
|
4
|
+
# FifthDiscountCalculator calculates between its range limit
|
5
|
+
# In case the salary is beyond this limit, it will use its quotation apply inside the range salary limit
|
6
|
+
class FifthDiscountCalculator < DiscountCalculatorBase
|
7
|
+
QUOTATION = 0.145
|
8
|
+
|
9
|
+
def contribution
|
10
|
+
return NO_CONTRIBUTION if salary <= salary_base
|
11
|
+
|
12
|
+
return full_contribution if salary > salary_limit
|
13
|
+
|
14
|
+
calculate_contribution
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def calculate_contribution
|
20
|
+
((salary - salary_base) * QUOTATION).truncate(2)
|
21
|
+
end
|
22
|
+
|
23
|
+
def full_contribution
|
24
|
+
((salary_limit - salary_base) * QUOTATION).truncate(2)
|
25
|
+
end
|
26
|
+
|
27
|
+
def salary_limit
|
28
|
+
InssCalculator::FIFTH_SALARY_LIMIT
|
29
|
+
end
|
30
|
+
|
31
|
+
def salary_base
|
32
|
+
InssCalculator::FOURTH_SALARY_LIMIT
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module InssCalculator
|
4
|
+
# Based on this insecure protocoll site https://www.coalize.com.br/calculadora-de-inss
|
5
|
+
# Check also the official law https://www.in.gov.br/en/web/dou/-/portaria-interministerial-mps/mf-n-2-de-11-de-janeiro-de-2024-537035232
|
6
|
+
# The public contribution is an extension of the private contribution.
|
7
|
+
# They have the same rules and quotes percentagen until the fourth salary level.
|
8
|
+
class PublicInssCalculator < InssCalculator::DiscountPrevidenceCalculator
|
9
|
+
def contribution
|
10
|
+
super + public_contribution
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def public_contribution
|
16
|
+
[
|
17
|
+
FifthDiscountCalculator.new(salary).contribution,
|
18
|
+
SixthDiscountCalculator.new(salary).contribution,
|
19
|
+
SeventhDiscountCalculator.new(salary).contribution,
|
20
|
+
EigthDiscountCalculator.new(salary).contribution
|
21
|
+
].reduce(:+).round(2)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module InssCalculator
|
4
|
+
# SeventhDiscountCalculator calculates between its range limit
|
5
|
+
# In case the salary is beyond this limit, it will use its quotation apply inside the range salary limit
|
6
|
+
class SeventhDiscountCalculator < DiscountCalculatorBase
|
7
|
+
QUOTATION = 0.19
|
8
|
+
|
9
|
+
def contribution
|
10
|
+
return NO_CONTRIBUTION if salary <= salary_base
|
11
|
+
|
12
|
+
return full_contribution if salary > salary_limit
|
13
|
+
|
14
|
+
calculate_contribution
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def calculate_contribution
|
20
|
+
((salary - salary_base) * QUOTATION).truncate(2)
|
21
|
+
end
|
22
|
+
|
23
|
+
def full_contribution
|
24
|
+
((salary_limit - salary_base) * QUOTATION).truncate(2)
|
25
|
+
end
|
26
|
+
|
27
|
+
def salary_limit
|
28
|
+
InssCalculator::SEVENTH_SALARY_LIMIT
|
29
|
+
end
|
30
|
+
|
31
|
+
def salary_base
|
32
|
+
InssCalculator::SIXTH_SALARY_LIMIT
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module InssCalculator
|
4
|
+
# SixthDiscountCalculator calculates between its range limit
|
5
|
+
# In case the salary is beyond this limit, it will use its quotation apply inside the range salary limit
|
6
|
+
class SixthDiscountCalculator < DiscountCalculatorBase
|
7
|
+
QUOTATION = 0.165
|
8
|
+
|
9
|
+
def contribution
|
10
|
+
return NO_CONTRIBUTION if salary <= salary_base
|
11
|
+
|
12
|
+
return full_contribution if salary > salary_limit
|
13
|
+
|
14
|
+
calculate_contribution
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def calculate_contribution
|
20
|
+
((salary - salary_base) * QUOTATION).truncate(2)
|
21
|
+
end
|
22
|
+
|
23
|
+
def full_contribution
|
24
|
+
((salary_limit - salary_base) * QUOTATION).truncate(2)
|
25
|
+
end
|
26
|
+
|
27
|
+
def salary_limit
|
28
|
+
InssCalculator::SIXTH_SALARY_LIMIT
|
29
|
+
end
|
30
|
+
|
31
|
+
def salary_base
|
32
|
+
InssCalculator::FIFTH_SALARY_LIMIT
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/lib/inss_calculator.rb
CHANGED
@@ -3,10 +3,15 @@
|
|
3
3
|
require_relative 'inss_calculator/version'
|
4
4
|
require_relative 'inss_calculator/discount_calculator_base'
|
5
5
|
require_relative 'inss_calculator/discount_previdence_calculator'
|
6
|
+
require_relative 'inss_calculator/public_inss_calculator'
|
6
7
|
require_relative 'inss_calculator/first_discount_calculator'
|
7
8
|
require_relative 'inss_calculator/second_discount_calculator'
|
8
9
|
require_relative 'inss_calculator/third_discount_calculator'
|
9
10
|
require_relative 'inss_calculator/fourth_discount_calculator'
|
11
|
+
require_relative 'inss_calculator/fifth_discount_calculator'
|
12
|
+
require_relative 'inss_calculator/sixth_discount_calculator'
|
13
|
+
require_relative 'inss_calculator/seventh_discount_calculator'
|
14
|
+
require_relative 'inss_calculator/eigth_discount_calculator'
|
10
15
|
|
11
16
|
module InssCalculator
|
12
17
|
class Error < StandardError; end
|
@@ -22,4 +27,16 @@ module InssCalculator
|
|
22
27
|
|
23
28
|
FOURTH_SALARY_BASE = 4000.04
|
24
29
|
FOURTH_SALARY_LIMIT = 7786.02
|
30
|
+
|
31
|
+
FIFTH_SALARY_BASE = 7786.03
|
32
|
+
FIFTH_SALARY_LIMIT = 13_333.48
|
33
|
+
|
34
|
+
SIXTH_SALARY_BASE = 13_333.49
|
35
|
+
SIXTH_SALARY_LIMIT = 26_666.94
|
36
|
+
|
37
|
+
SEVENTH_SALARY_BASE = 26_666.95
|
38
|
+
SEVENTH_SALARY_LIMIT = 52_000.54
|
39
|
+
|
40
|
+
EIGTH_SALARY_BASE = 52_000.55
|
41
|
+
EIGTH_SALARY_LIMIT = Float::INFINITY
|
25
42
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: inss_calculator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Paulo Felipe Souza
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-08-08 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Calcula o valor a descontar de acordo com a faixa salarial. Os novos
|
14
14
|
valores corrente em 2024.
|
@@ -32,9 +32,14 @@ files:
|
|
32
32
|
- lib/inss_calculator.rb
|
33
33
|
- lib/inss_calculator/discount_calculator_base.rb
|
34
34
|
- lib/inss_calculator/discount_previdence_calculator.rb
|
35
|
+
- lib/inss_calculator/eigth_discount_calculator.rb
|
36
|
+
- lib/inss_calculator/fifth_discount_calculator.rb
|
35
37
|
- lib/inss_calculator/first_discount_calculator.rb
|
36
38
|
- lib/inss_calculator/fourth_discount_calculator.rb
|
39
|
+
- lib/inss_calculator/public_inss_calculator.rb
|
37
40
|
- lib/inss_calculator/second_discount_calculator.rb
|
41
|
+
- lib/inss_calculator/seventh_discount_calculator.rb
|
42
|
+
- lib/inss_calculator/sixth_discount_calculator.rb
|
38
43
|
- lib/inss_calculator/third_discount_calculator.rb
|
39
44
|
- lib/inss_calculator/version.rb
|
40
45
|
- sig/inss_calculator.rbs
|
@@ -60,7 +65,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
60
65
|
- !ruby/object:Gem::Version
|
61
66
|
version: '0'
|
62
67
|
requirements: []
|
63
|
-
rubygems_version: 3.
|
68
|
+
rubygems_version: 3.5.17
|
64
69
|
signing_key:
|
65
70
|
specification_version: 4
|
66
71
|
summary: Calculadora de desconto do INSS
|