validator_ie 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +5 -0
  5. data/CODE_OF_CONDUCT.md +49 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +42 -0
  9. data/Rakefile +6 -0
  10. data/bin/console +14 -0
  11. data/bin/setup +8 -0
  12. data/lib/validator_ie.rb +42 -0
  13. data/lib/validator_ie/core/mod_functions.rb +20 -0
  14. data/lib/validator_ie/core/state_ac.rb +47 -0
  15. data/lib/validator_ie/core/state_al.rb +47 -0
  16. data/lib/validator_ie/core/state_am.rb +37 -0
  17. data/lib/validator_ie/core/state_ap.rb +51 -0
  18. data/lib/validator_ie/core/state_ba.rb +47 -0
  19. data/lib/validator_ie/core/state_ce.rb +34 -0
  20. data/lib/validator_ie/core/state_df.rb +47 -0
  21. data/lib/validator_ie/core/state_es.rb +38 -0
  22. data/lib/validator_ie/core/state_go.rb +55 -0
  23. data/lib/validator_ie/core/state_ma.rb +39 -0
  24. data/lib/validator_ie/core/state_mg.rb +49 -0
  25. data/lib/validator_ie/core/state_ms.rb +38 -0
  26. data/lib/validator_ie/core/state_mt.rb +38 -0
  27. data/lib/validator_ie/core/state_pa.rb +38 -0
  28. data/lib/validator_ie/core/state_pb.rb +38 -0
  29. data/lib/validator_ie/core/state_pe.rb +35 -0
  30. data/lib/validator_ie/core/state_pi.rb +38 -0
  31. data/lib/validator_ie/core/state_rj.rb +34 -0
  32. data/lib/validator_ie/core/state_rn.rb +39 -0
  33. data/lib/validator_ie/core/state_ro.rb +38 -0
  34. data/lib/validator_ie/core/state_rr.rb +33 -0
  35. data/lib/validator_ie/core/state_rs.rb +34 -0
  36. data/lib/validator_ie/core/state_sc.rb +35 -0
  37. data/lib/validator_ie/core/state_se.rb +35 -0
  38. data/lib/validator_ie/core/state_sp.rb +41 -0
  39. data/lib/validator_ie/core/state_to.rb +35 -0
  40. data/lib/validator_ie/version.rb +3 -0
  41. data/validator_ie.gemspec +32 -0
  42. metadata +127 -0
@@ -0,0 +1,38 @@
1
+ module ValidatorIE
2
+
3
+ class StatePI
4
+ include ActiveModel::Validations
5
+
6
+ attr_accessor :number
7
+ validates :number, length: { minimum: 9, maximum: 9 }, numericality: true, presence: true
8
+ validate :number_should_mod11
9
+
10
+ def initialize(opts={})
11
+ opts.each do |key, value|
12
+ self.public_send("#{key}=", value)
13
+ end
14
+ end
15
+
16
+ def number_should_code_state
17
+ number[0..1].eql?('15')
18
+ end
19
+
20
+ def number_should_mod11
21
+ result = number_should_modX(11, 7)
22
+ return if result
23
+ errors.add(:number, 'não é válido a inscrição estadual.')
24
+ end
25
+
26
+ private
27
+ def number_should_modX(mod, at, final = number.size)
28
+ numberX = number.split(//).map(&:to_i)
29
+ sum = ModFunctions.sumX(numberX, at, final)
30
+
31
+ divmod = sum.divmod(mod).last
32
+ digit = divmod >= 10 ? 0 : 11 - divmod
33
+ numberX[at + 1].eql?(digit)
34
+ end
35
+
36
+ end
37
+
38
+ end
@@ -0,0 +1,34 @@
1
+ module ValidatorIE
2
+
3
+ class StateRJ
4
+ include ActiveModel::Validations
5
+
6
+ attr_accessor :number
7
+ validates :number, length: { minimum: 8, maximum: 8 }, numericality: true, presence: true
8
+ validate :number_should_mod11
9
+
10
+ def initialize(opts={})
11
+ opts.each do |key, value|
12
+ self.public_send("#{key}=", value)
13
+ end
14
+ end
15
+
16
+ def number_should_mod11
17
+ result = number_should_modX(11, 6, 7) # Final Sequence = 7
18
+ return if result
19
+ errors.add(:number, 'não é válido a inscrição estadual.')
20
+ end
21
+
22
+ private
23
+ def number_should_modX(mod, at, final = number.size)
24
+ numberX = number.split(//).map(&:to_i)
25
+ sum = ModFunctions.sumX(numberX, at, final)
26
+
27
+ divmod = sum.divmod(mod).last
28
+ digit = divmod <= 1 ? 0 : mod - divmod
29
+ numberX[at + 1].eql?(digit)
30
+ end
31
+
32
+ end
33
+
34
+ end
@@ -0,0 +1,39 @@
1
+ require_relative 'mod_functions'
2
+
3
+ module ValidatorIE
4
+
5
+ class StateRN
6
+ include ActiveModel::Validations
7
+
8
+ attr_accessor :number
9
+ validates :number, length: { minimum: 9, maximum: 10 }, numericality: true, presence: true
10
+ validate :number_should_code_state
11
+ validate :number_should_mod11
12
+
13
+ def initialize(opts={})
14
+ opts.each do |key, value|
15
+ self.public_send("#{key}=", value)
16
+ end
17
+ end
18
+
19
+ def number_should_code_state
20
+ number[0..1].eql?('20')
21
+ end
22
+
23
+ def number_should_mod11
24
+ result = number_should_modX(11, number.size - 2)
25
+ return if result
26
+ errors.add(:number, 'não é válido a inscrição estadual.')
27
+ end
28
+
29
+ private
30
+ def number_should_modX(mod, at, final = number.size)
31
+ numberX = number.split(//).map(&:to_i)
32
+ sum = ModFunctions.sumX(numberX, at, final) * 10 # One digits
33
+ digit = sum.divmod(mod).last
34
+ digit = digit >= 10 ? 0 : digit
35
+ numberX[at + 1].eql?(digit)
36
+ end
37
+ end
38
+
39
+ end
@@ -0,0 +1,38 @@
1
+ require_relative 'mod_functions'
2
+
3
+ module ValidatorIE
4
+
5
+ class StateRO
6
+ include ActiveModel::Validations
7
+
8
+ attr_accessor :number
9
+ validates :number, length: { minimum: 9, maximum: 14 }, numericality: true, presence: true
10
+ validate :number_should_mod11
11
+
12
+ def initialize(opts={})
13
+ opts.each do |key, value|
14
+ self.public_send("#{key}=", value)
15
+ end
16
+ end
17
+
18
+ def number_should_mod11
19
+ unless number.size == 14
20
+ nOr = number
21
+ nOr = nOr[3..nOr.size].to_s.rjust(14, "0") # Fix to 14 digits
22
+ self.number = nOr
23
+ end
24
+ result = number_should_modX(11, number.size - 2, 9)
25
+ return if result
26
+ errors.add(:number, 'não é válido a inscrição estadual.')
27
+ end
28
+
29
+ private
30
+ def number_should_modX(mod, at, final = number.size)
31
+ numberX = number.split(//).map(&:to_i)
32
+ sum = ModFunctions.sumX(numberX, at, final)
33
+ digit = 11 - sum.divmod(mod).last
34
+ numberX[at + 1].eql?(digit)
35
+ end
36
+ end
37
+
38
+ end
@@ -0,0 +1,33 @@
1
+ require_relative 'mod_functions'
2
+
3
+ module ValidatorIE
4
+
5
+ class StateRR
6
+ include ActiveModel::Validations
7
+
8
+ attr_accessor :number
9
+ validates :number, length: { minimum: 9, maximum: 9 }, numericality: true, presence: true
10
+ validate :number_should_mod11
11
+
12
+ def initialize(opts={})
13
+ opts.each do |key, value|
14
+ self.public_send("#{key}=", value)
15
+ end
16
+ end
17
+
18
+ def number_should_mod11
19
+ result = number_should_modX(9, number.size - 2, 9)
20
+ return if result
21
+ errors.add(:number, 'não é válido a inscrição estadual.')
22
+ end
23
+
24
+ private
25
+ def number_should_modX(mod, at, final = number.size)
26
+ numberX = number.split(//).map(&:to_i)
27
+ sum = ModFunctions.sumX(numberX, at, final, false)
28
+ digit = sum.divmod(mod).last
29
+ numberX[at + 1].eql?(digit)
30
+ end
31
+ end
32
+
33
+ end
@@ -0,0 +1,34 @@
1
+ require_relative 'mod_functions'
2
+
3
+ module ValidatorIE
4
+
5
+ class StateRS
6
+ include ActiveModel::Validations
7
+
8
+ attr_accessor :number
9
+ validates :number, length: { minimum: 10, maximum: 10 }, numericality: true, presence: true
10
+ validate :number_should_mod11
11
+
12
+ def initialize(opts={})
13
+ opts.each do |key, value|
14
+ self.public_send("#{key}=", value)
15
+ end
16
+ end
17
+
18
+ def number_should_mod11
19
+ result = number_should_modX(11, number.size - 2, 9)
20
+ return if result
21
+ errors.add(:number, 'não é válido a inscrição estadual.')
22
+ end
23
+
24
+ private
25
+ def number_should_modX(mod, at, final = number.size)
26
+ numberX = number.split(//).map(&:to_i)
27
+ sum = ModFunctions.sumX(numberX, at, final) * 10 # One digits
28
+ digit = sum.divmod(mod).last
29
+ digit = digit >= 10 ? 0 : digit
30
+ numberX[at + 1].eql?(digit)
31
+ end
32
+ end
33
+
34
+ end
@@ -0,0 +1,35 @@
1
+ require_relative 'mod_functions'
2
+
3
+ module ValidatorIE
4
+
5
+ class StateSC
6
+ include ActiveModel::Validations
7
+
8
+ attr_accessor :number
9
+ validates :number, length: { minimum: 9, maximum: 9 }, numericality: true, presence: true
10
+ validate :number_should_mod11
11
+
12
+ def initialize(opts={})
13
+ opts.each do |key, value|
14
+ self.public_send("#{key}=", value)
15
+ end
16
+ end
17
+
18
+ def number_should_mod11
19
+ result = number_should_modX(11, number.size - 2)
20
+ return if result
21
+ errors.add(:number, 'não é válido a inscrição estadual.')
22
+ end
23
+
24
+ private
25
+ def number_should_modX(mod, at, final = number.size)
26
+ numberX = number.split(//).map(&:to_i)
27
+ sum = ModFunctions.sumX(numberX, at, final)
28
+
29
+ divmod = sum.divmod(mod).last
30
+ digit = divmod <= 1 ? 0 : mod - sum.divmod(mod).last
31
+ numberX[at + 1].eql?(digit)
32
+ end
33
+ end
34
+
35
+ end
@@ -0,0 +1,35 @@
1
+ require_relative 'mod_functions'
2
+
3
+ module ValidatorIE
4
+
5
+ class StateSE
6
+ include ActiveModel::Validations
7
+
8
+ attr_accessor :number
9
+ validates :number, length: { minimum: 9, maximum: 9 }, numericality: true, presence: true
10
+ validate :number_should_mod11
11
+
12
+ def initialize(opts={})
13
+ opts.each do |key, value|
14
+ self.public_send("#{key}=", value)
15
+ end
16
+ end
17
+
18
+ def number_should_mod11
19
+ result = number_should_modX(11, 7)
20
+ return if result
21
+ errors.add(:number, 'não é válido a inscrição estadual.')
22
+ end
23
+
24
+ private
25
+ def number_should_modX(mod, at, final = number.size)
26
+ numberX = number.split(//).map(&:to_i)
27
+ sum = ModFunctions.sumX(numberX, at, final)
28
+ divmod = sum.divmod(mod).last
29
+ digit = mod - sum.divmod(mod).last
30
+ digit = digit >= 10 ? 0 : digit
31
+ numberX[at + 1].eql?(digit)
32
+ end
33
+ end
34
+
35
+ end
@@ -0,0 +1,41 @@
1
+ require_relative 'mod_functions'
2
+
3
+ module ValidatorIE
4
+
5
+ class StateSP
6
+ include ActiveModel::Validations
7
+
8
+ MATRIX = [1, 3, 4, 5, 6, 7, 8, 10]
9
+
10
+ attr_accessor :number
11
+ validates :number, length: { minimum: 12, maximum: 12 }, numericality: true, presence: true
12
+ validate :number_should_mod11
13
+
14
+ def initialize(opts={})
15
+ opts.each do |key, value|
16
+ self.public_send("#{key}=", value)
17
+ end
18
+ end
19
+
20
+ def number_should_mod11
21
+ result1 = number_should_modX(11, 7, nil, MATRIX)
22
+ result2 = number_should_modX(11, 10, 10)
23
+ return if result1 && result2
24
+ errors.add(:number, 'não é válido a inscrição estadual.')
25
+ end
26
+
27
+ private
28
+ def number_should_modX(mod, at, final = number.size, matrix = nil)
29
+ numberX = number.split(//).map(&:to_i)
30
+ unless matrix.nil?
31
+ sum = ModFunctions.sumX(numberX, at, final, nil, matrix)
32
+ else
33
+ sum = ModFunctions.sumX(numberX, at, final)
34
+ end
35
+ divmod = sum.divmod(mod).last
36
+ digit = divmod == 10 ? 0 : sum.divmod(mod).last
37
+ numberX[at + 1].eql?(digit)
38
+ end
39
+ end
40
+
41
+ end
@@ -0,0 +1,35 @@
1
+ require_relative 'mod_functions'
2
+
3
+ module ValidatorIE
4
+
5
+ class StateTO
6
+ include ActiveModel::Validations
7
+
8
+ attr_accessor :number
9
+ validates :number, length: { minimum: 11, maximum: 11 }, numericality: true, presence: true
10
+ validate :number_should_mod11
11
+
12
+ def initialize(opts={})
13
+ opts.each do |key, value|
14
+ self.public_send("#{key}=", value)
15
+ end
16
+ end
17
+
18
+ def number_should_mod11
19
+ self.number = number.split(//).map.with_index {|m, k| m unless k == 2 || k == 3}.compact!.join('')
20
+ result = number_should_modX(11, 7)
21
+ return if result
22
+ errors.add(:number, 'não é válido a inscrição estadual.')
23
+ end
24
+
25
+ private
26
+ def number_should_modX(mod, at, final = number.size)
27
+ numberX = number.split(//).map(&:to_i)
28
+ sum = ModFunctions.sumX(numberX, at, final)
29
+ divmod = sum.divmod(mod).last
30
+ digit = divmod < 2 ? 0 : mod - divmod
31
+ numberX[at + 1].eql?(digit)
32
+ end
33
+ end
34
+
35
+ end
@@ -0,0 +1,3 @@
1
+ module ValidatorIE
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,32 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'validator_ie/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "validator_ie"
8
+ spec.version = ValidatorIE::VERSION
9
+ spec.authors = ["Rodrigo Moraes de Oliveira"]
10
+ spec.email = ["rmomogi@gmail.com"]
11
+
12
+ spec.summary = "Gem para validação de inscrição estadual"
13
+ spec.description = "Validação de inscrição estadual dos 26 estados federativos"
14
+ spec.license = "MIT"
15
+
16
+ # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
17
+ # to allow pushing to a single host or delete this section to allow pushing to any host.
18
+ #if spec.respond_to?(:metadata)
19
+ # spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"
20
+ #else
21
+ # raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
22
+ #end
23
+
24
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
25
+ spec.bindir = "exe"
26
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
27
+ spec.require_paths = ["lib"]
28
+
29
+ spec.add_development_dependency "bundler", "~> 1.12"
30
+ spec.add_development_dependency "rake", "~> 10.0"
31
+ spec.add_development_dependency "rspec", "~> 3.0"
32
+ end
metadata ADDED
@@ -0,0 +1,127 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: validator_ie
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Rodrigo Moraes de Oliveira
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2016-08-15 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.12'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.12'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ description: Validação de inscrição estadual dos 26 estados federativos
56
+ email:
57
+ - rmomogi@gmail.com
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - ".gitignore"
63
+ - ".rspec"
64
+ - ".travis.yml"
65
+ - CODE_OF_CONDUCT.md
66
+ - Gemfile
67
+ - LICENSE.txt
68
+ - README.md
69
+ - Rakefile
70
+ - bin/console
71
+ - bin/setup
72
+ - lib/validator_ie.rb
73
+ - lib/validator_ie/core/mod_functions.rb
74
+ - lib/validator_ie/core/state_ac.rb
75
+ - lib/validator_ie/core/state_al.rb
76
+ - lib/validator_ie/core/state_am.rb
77
+ - lib/validator_ie/core/state_ap.rb
78
+ - lib/validator_ie/core/state_ba.rb
79
+ - lib/validator_ie/core/state_ce.rb
80
+ - lib/validator_ie/core/state_df.rb
81
+ - lib/validator_ie/core/state_es.rb
82
+ - lib/validator_ie/core/state_go.rb
83
+ - lib/validator_ie/core/state_ma.rb
84
+ - lib/validator_ie/core/state_mg.rb
85
+ - lib/validator_ie/core/state_ms.rb
86
+ - lib/validator_ie/core/state_mt.rb
87
+ - lib/validator_ie/core/state_pa.rb
88
+ - lib/validator_ie/core/state_pb.rb
89
+ - lib/validator_ie/core/state_pe.rb
90
+ - lib/validator_ie/core/state_pi.rb
91
+ - lib/validator_ie/core/state_rj.rb
92
+ - lib/validator_ie/core/state_rn.rb
93
+ - lib/validator_ie/core/state_ro.rb
94
+ - lib/validator_ie/core/state_rr.rb
95
+ - lib/validator_ie/core/state_rs.rb
96
+ - lib/validator_ie/core/state_sc.rb
97
+ - lib/validator_ie/core/state_se.rb
98
+ - lib/validator_ie/core/state_sp.rb
99
+ - lib/validator_ie/core/state_to.rb
100
+ - lib/validator_ie/version.rb
101
+ - validator_ie.gemspec
102
+ homepage:
103
+ licenses:
104
+ - MIT
105
+ metadata: {}
106
+ post_install_message:
107
+ rdoc_options: []
108
+ require_paths:
109
+ - lib
110
+ required_ruby_version: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - ">="
113
+ - !ruby/object:Gem::Version
114
+ version: '0'
115
+ required_rubygems_version: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - ">="
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
120
+ requirements: []
121
+ rubyforge_project:
122
+ rubygems_version: 2.5.1
123
+ signing_key:
124
+ specification_version: 4
125
+ summary: Gem para validação de inscrição estadual
126
+ test_files: []
127
+ has_rdoc: