br_inscricao_estadual 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 149168832cbf411e7717233c8e05fa959edaf1b2
4
- data.tar.gz: e45ee89757bf90e1d01e1fda8d210832b26d070d
3
+ metadata.gz: ee878caafba45170dca196ca1baacd1410e7d769
4
+ data.tar.gz: 34e587b96acae85c2da70a159e9c752f60a2d06f
5
5
  SHA512:
6
- metadata.gz: a5b27e5ba4c2fc7346868726720ff66f46dfebce5694a69fd4cc6596a7006b8b012c1e01506b63668d66a22920235f4d5d7cb25a837e0c3843c456597feddeca
7
- data.tar.gz: 6663d5fffadf45883940c065c6837881a4aae88115a9840f776d9f3eff45a01c6b2de4505408bd4bc8074502dea3331fc995177128e286a596d07ff149dc1f36
6
+ metadata.gz: fdc84010a07af3d2b47d608df419699c3d6b46a0cba1e698f196e8bf0fe932a6f03410f056ab7588af1e4c65e3d88adafb29676de5a93fd5027ed7d0aaabaa70
7
+ data.tar.gz: e8f935a16a1877ef1a61ecfd9f5e8ececc11e0293b5bcb94b86dbf8a0ad2279587e282eb98aeb538352f2b4730bc59d8d42f29fcc7e9a6493c8ff88786032b02
@@ -1,10 +1,52 @@
1
1
  module BrInscricaoEstadual
2
- class MG < Common
2
+ class MG < Common
3
+
4
+ def multiply(numero, peso)
5
+ result = []
6
+ numero.split('').collect(&:to_i).take(peso.size).each_with_index do |item, index|
7
+ result << (item * peso[index])
8
+ end
9
+ result
10
+ end
11
+
12
+ def calculate_digito1(numero)
13
+ # Acrescenta um zero a partir do 4o digito caso inscr conter apenas 6 digitos
14
+ mun, inscr, estab = numero.match(/^(\d{3})(\d{6,7})(\d{2})\d{2}$/).captures
15
+ numero = mun + inscr.rjust(7, '0') + estab
16
+
17
+ # Soma os algarismos dos produtos
18
+ soma = multiply(numero, self.class::PESO).
19
+ collect{|r| r.to_s.split('')}.
20
+ flatten.
21
+ collect(&:to_i).
22
+ inject(:+)
23
+
24
+ # Soma deve ser subtraida da proxima dezena. Exemplo: Se soma for 38 => 40 - 38 = 2
25
+ result = (soma.to_f / 10.0).ceil * 10 - soma
26
+ digit_verify_inscription(result)
27
+ end
28
+
29
+ def calculate_digito2(numero)
30
+ # Soma os produtos
31
+ soma = multiply(numero, self.class::PESO2).inject(:+)
32
+ result = 11 - (soma % 11)
33
+ digit_verify_inscription(result)
34
+ end
35
+
36
+ def digit_verify
37
+ digito1 = calculate_digito1(self.insc_est)
38
+ return false unless self.insc_est[-2].to_i == digito1 #[0,1].include?(digito1) &&
39
+
40
+ digito2 = calculate_digito2(self.insc_est)
41
+ return false unless self.insc_est[-1].to_i == digito2
42
+
43
+ true
44
+ end
45
+
3
46
  protected
4
- PESO = [1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1]
47
+ PESO = [1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2]
5
48
  PESO2 = [3, 2, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2]
6
49
  STATE_INSC_SIZE = 13
7
- DIGITS_ZERO = [0]
8
-
9
- end
10
- end
50
+ DIGITS_ZERO = [0, 10, 11]
51
+ end
52
+ end
@@ -3,7 +3,10 @@ module BrInscricaoEstadual
3
3
  protected
4
4
  PESO = [3, 2, 9, 8, 7, 6, 5, 4, 3, 2]
5
5
  STATE_INSC_SIZE = 11
6
- DIGITS_ZERO = [0,1]
6
+ DIGITS_ZERO = [0,1,11]
7
7
 
8
+ def initialize(insc_est)
9
+ super(insc_est.rjust(11, '0'))
10
+ end
8
11
  end
9
12
  end
@@ -4,7 +4,7 @@ module BrInscricaoEstadual
4
4
  PESO = [3, 2, 7, 6, 5, 4, 3, 2]
5
5
  PESO2 = [4, 3, 2, 7, 6, 5, 4, 3, 2]
6
6
  STATE_INSC_SIZE = 10
7
- DIGITS_ZERO = [0,1,10,11]
7
+ DIGITS_ZERO = [10,11]
8
8
 
9
9
  end
10
10
  end
@@ -15,7 +15,7 @@ module BrInscricaoEstadual
15
15
  PESO = [1, 3, 4, 5, 6, 7, 8, 10]
16
16
  PESO2= [3, 2, 10, 9, 8, 7, 6, 5, 4, 3, 2]
17
17
  STATE_INSC_SIZE = 12
18
- DIGITS_ZERO = [0,1,10,11]
18
+ DIGITS_ZERO = [0,10,11]
19
19
 
20
20
 
21
21
  def calculate_verify(peso)
@@ -1,3 +1,3 @@
1
1
  module BrInscricaoEstadual
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -4,8 +4,74 @@ require 'spec_helper'
4
4
  describe BrInscricaoEstadual::MG do
5
5
 
6
6
  it "should valid MINAS GERAIS states incription" do
7
- insc_est = BrInscricaoEstadual::MG.new('062.307.904/0081')
8
- insc_est.should be_valid
7
+ BrInscricaoEstadual::MG.new('062.307.904/0081').should be_valid
8
+ BrInscricaoEstadual::MG.new('062.214.445/0047').should be_valid
9
+ BrInscricaoEstadual::MG.new('001.035.396/0004').should be_valid
10
+ BrInscricaoEstadual::MG.new('186.910.241/0136').should be_valid
11
+ BrInscricaoEstadual::MG.new('499.740.521/0085').should be_valid
12
+ BrInscricaoEstadual::MG.new('702.513.460/0075').should be_valid
13
+ BrInscricaoEstadual::MG.new('740.005.860/0071').should be_valid
14
+ BrInscricaoEstadual::MG.new('480.982.828/0056').should be_valid
15
+ BrInscricaoEstadual::MG.new('433.573.931/0001').should be_valid
16
+ BrInscricaoEstadual::MG.new('647.969.331/0078').should be_valid
17
+ BrInscricaoEstadual::MG.new('376.610.425/0075').should be_valid
18
+ BrInscricaoEstadual::MG.new('143.973.352/0063').should be_valid
19
+ BrInscricaoEstadual::MG.new('287.864.638/0068').should be_valid
20
+ BrInscricaoEstadual::MG.new('186.889.176/0008').should be_valid
21
+ BrInscricaoEstadual::MG.new('515.984.089/0012').should be_valid
22
+ BrInscricaoEstadual::MG.new('693.298.770/0013').should be_valid
23
+ BrInscricaoEstadual::MG.new('186.737.837/0013').should be_valid
24
+ BrInscricaoEstadual::MG.new('525.138.072/1906').should be_valid
25
+ BrInscricaoEstadual::MG.new('480.214.415/0014').should be_valid
26
+ BrInscricaoEstadual::MG.new('701.122.369/0041').should be_valid
27
+ BrInscricaoEstadual::MG.new('186.335.661/0271').should be_valid
28
+ BrInscricaoEstadual::MG.new('186.834.291/0035').should be_valid
29
+ BrInscricaoEstadual::MG.new('433.267.499/0094').should be_valid
30
+ BrInscricaoEstadual::MG.new('707.105.035/0066').should be_valid
31
+ BrInscricaoEstadual::MG.new('062.755.302/0027').should be_valid
32
+ BrInscricaoEstadual::MG.new('702.267.499/0113').should be_valid
33
+ BrInscricaoEstadual::MG.new('035.016.082/0094').should be_valid
34
+ BrInscricaoEstadual::MG.new('702.225.477/0005').should be_valid
35
+ BrInscricaoEstadual::MG.new('062.227.097/0089').should be_valid
36
+ BrInscricaoEstadual::MG.new('702.042.509/0010').should be_valid
37
+ BrInscricaoEstadual::MG.new('062.094.890/0066').should be_valid
38
+ BrInscricaoEstadual::MG.new('525.327.132/0031').should be_valid
39
+ BrInscricaoEstadual::MG.new('186.335.661/0018').should be_valid
40
+ BrInscricaoEstadual::MG.new('062.181.701/0092').should be_valid
41
+ BrInscricaoEstadual::MG.new('186.355.488/0046').should be_valid
42
+ BrInscricaoEstadual::MG.new('740.068.032/0079').should be_valid
43
+ BrInscricaoEstadual::MG.new('158.145.294/0051').should be_valid
44
+ BrInscricaoEstadual::MG.new('702.365.983/0071').should be_valid
45
+ BrInscricaoEstadual::MG.new('517.144.680/0029').should be_valid
46
+ BrInscricaoEstadual::MG.new('525.181.112/0000').should be_valid
47
+ BrInscricaoEstadual::MG.new('001.090.589/0027').should be_valid
48
+ BrInscricaoEstadual::MG.new('480.325.816/0141').should be_valid
49
+ BrInscricaoEstadual::MG.new('525.473.544/0014').should be_valid
50
+ BrInscricaoEstadual::MG.new('376.337.418/0042').should be_valid
51
+ BrInscricaoEstadual::MG.new('001.049.745/0020').should be_valid
52
+ BrInscricaoEstadual::MG.new('240.991.605/0071').should be_valid
53
+ BrInscricaoEstadual::MG.new('123.881.190/0054').should be_valid
54
+ BrInscricaoEstadual::MG.new('016.188.510/0041').should be_valid
55
+ BrInscricaoEstadual::MG.new('583.174.991/0057').should be_valid
56
+ BrInscricaoEstadual::MG.new('546.227.186/0058').should be_valid
57
+ BrInscricaoEstadual::MG.new('001.044.697/0000').should be_valid
58
+ BrInscricaoEstadual::MG.new('481.081.447/0038').should be_valid
59
+ BrInscricaoEstadual::MG.new('001.549.960/0023').should be_valid
60
+ BrInscricaoEstadual::MG.new('067.123.354/0032').should be_valid
61
+ BrInscricaoEstadual::MG.new('035.792.254/0048').should be_valid
62
+ BrInscricaoEstadual::MG.new('525.231.599/0087').should be_valid
63
+ BrInscricaoEstadual::MG.new('001.134.942/0506').should be_valid
64
+ BrInscricaoEstadual::MG.new('471.806.668/0003').should be_valid
65
+ BrInscricaoEstadual::MG.new('001.030.827/0096').should be_valid
66
+ BrInscricaoEstadual::MG.new('001.924.023/0041').should be_valid
67
+ BrInscricaoEstadual::MG.new('062.094.007/0072').should be_valid
68
+ BrInscricaoEstadual::MG.new('001.105.990/0050').should be_valid
69
+ BrInscricaoEstadual::MG.new('701.826.226/0059').should be_valid
70
+ BrInscricaoEstadual::MG.new('693.370.129/0013').should be_valid
71
+ BrInscricaoEstadual::MG.new('694.204.519/0045').should be_valid
72
+ BrInscricaoEstadual::MG.new('001.098.458/0026').should be_valid
73
+ BrInscricaoEstadual::MG.new('002.062.902/0000').should be_valid
74
+ BrInscricaoEstadual::MG.new('020.118.535/0345').should be_valid
9
75
  end
10
76
 
11
77
  it "should not valid MINAS GERAIS states incription" do
@@ -8,6 +8,16 @@ describe BrInscricaoEstadual::MT do
8
8
  insc_est.should be_valid
9
9
  end
10
10
 
11
+ it "should valid Mato Grosso states incription" do
12
+ insc_est = BrInscricaoEstadual::MT.new('00131742280')
13
+ insc_est.should be_valid
14
+ end
15
+
16
+ it "should valid Mato Grosso states incription 2" do
17
+ insc_est = BrInscricaoEstadual::MT.new('131661388')
18
+ insc_est.should be_valid
19
+ end
20
+
11
21
  it "should not valid Mato Grosso states incription" do
12
22
  insc_est = BrInscricaoEstadual::MT.new('0013000002-9')
13
23
  insc_est.should_not be_valid
@@ -8,6 +8,11 @@ describe BrInscricaoEstadual::PR do
8
8
  insc_est.should be_valid
9
9
  end
10
10
 
11
+ it "should valid Parana states incription " do
12
+ insc_est = BrInscricaoEstadual::PR.new('801.00913-15')
13
+ insc_est.should be_valid
14
+ end
15
+
11
16
  it "should not valid Parana states incription" do
12
17
  insc_est = BrInscricaoEstadual::PR.new('123.45878-50')
13
18
  insc_est.should_not be_valid
@@ -7,6 +7,10 @@ describe BrInscricaoEstadual::SP do
7
7
  insc_est = BrInscricaoEstadual::SP.new('110.042.490.114')
8
8
  insc_est.should be_valid
9
9
  end
10
+ it "should valid São Paulo states incription" do
11
+ insc_est = BrInscricaoEstadual::SP.new('279007151111')
12
+ insc_est.should be_valid
13
+ end
10
14
 
11
15
  it "should not valid São Paulo states incription" do
12
16
  insc_est = BrInscricaoEstadual::SP.new('110.043.490.114')
metadata CHANGED
@@ -1,125 +1,125 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: br_inscricao_estadual
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yuri Poloni
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-30 00:00:00.000000000 Z
11
+ date: 2014-08-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.3'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.3'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rdoc
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: '4.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '4.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
61
  version: '2.13'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ~>
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '2.13'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: pry
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ~>
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0.9'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ~>
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0.9'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: pry-nav
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ~>
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0.2'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ~>
94
+ - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0.2'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: simplecov
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ~>
101
+ - - "~>"
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0.7'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ~>
108
+ - - "~>"
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0.7'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: coveralls
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ~>
115
+ - - "~>"
116
116
  - !ruby/object:Gem::Version
117
117
  version: '0.6'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ~>
122
+ - - "~>"
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0.6'
125
125
  description: A Ruby validate state registration on Brazil. Validação de Inscrição
@@ -131,9 +131,9 @@ executables: []
131
131
  extensions: []
132
132
  extra_rdoc_files: []
133
133
  files:
134
- - .coveralls.yml
135
- - .gitignore
136
- - .travis.yml
134
+ - ".coveralls.yml"
135
+ - ".gitignore"
136
+ - ".travis.yml"
137
137
  - Gemfile
138
138
  - LICENSE
139
139
  - LICENSE.txt
@@ -216,17 +216,17 @@ require_paths:
216
216
  - lib
217
217
  required_ruby_version: !ruby/object:Gem::Requirement
218
218
  requirements:
219
- - - '>='
219
+ - - ">="
220
220
  - !ruby/object:Gem::Version
221
221
  version: '0'
222
222
  required_rubygems_version: !ruby/object:Gem::Requirement
223
223
  requirements:
224
- - - '>='
224
+ - - ">="
225
225
  - !ruby/object:Gem::Version
226
226
  version: '0'
227
227
  requirements: []
228
228
  rubyforge_project:
229
- rubygems_version: 2.1.10
229
+ rubygems_version: 2.2.2
230
230
  signing_key:
231
231
  specification_version: 4
232
232
  summary: A Ruby validate state registration on Brazil with http://www.sintegra.gov.br/insc_est.html