verificador_boleto_br 0.1.3 → 0.1.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
  SHA256:
3
- metadata.gz: c35a0def8abc00b3967eb7c0104429b4e579fbdf29e303329a1ba3de6cd14716
4
- data.tar.gz: 0c9247621d9c7406e0f43442e350627d9c809490cedb2628038695cca66e0975
3
+ metadata.gz: 7bdcfc77a1579acbf0ba65b3df459cff54c511bc9a34dc923ad2899ef3198c6f
4
+ data.tar.gz: 7cd07fa4cc00d5013bdb19a89dd56cc744a767d34d2ca96b96cf7a65bb6acd30
5
5
  SHA512:
6
- metadata.gz: b1e0461ca6487fa9a366242a1d877480a0d9e13d3dc500794c9374db8fa1475c77064985dca0067e84bf583de2a84dbfa4bda293effcbda3f92658d6ba79603a
7
- data.tar.gz: 5f888117a7b57076fa5fa65e2aecbc30300a2914e72e70928e72e2af87057addecf87aef384edea16f02e545a215fafd7ce2d6a9bb6d1ce314614b4990e26a64
6
+ metadata.gz: 1897917e8a3d383238210d4087ad20459a20bb411fa4a58ba1b2ca6e85119d13bad83ab91a15bd3d51c77613bcaeae96f7ebe2ab0a3bef5cbae622a57d02f06f
7
+ data.tar.gz: f6073471392c4ee31d9743a0f01b537f9272b526158a6dc8fbdae0cf5bb9e6946d5734932d0fc1d482e819fc52bf371325676d3af02389d01c951c7d205b7964
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- verificador_boleto_br (0.1.1)
4
+ verificador_boleto_br (0.1.4)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -34,7 +34,7 @@ Or install it yourself as:
34
34
  ````ruby
35
35
  require './lib/verificador_boleto_br'
36
36
  >> slip = VerificadorBoletoBr.check('34191 75801 03928 662935 80573 180009 4 67700000007388')
37
- => #<VerificadorBoletoBr::BankSlip:0x00007ff4c3933478 @digitable_line="34191 75801 03928 662935 80573 180009 4 67700000007388">
37
+ => #<VerificadorBoletoBr::Slip::Bank::Validity:0x00007f9f820c7a00 @digitable_line="34191 75801 03928 662935 80573 180009 4 67700000007388", @kind=:bank_slip>
38
38
  ````
39
39
  It will return the respective slip class with its methods:
40
40
 
@@ -47,6 +47,8 @@ It will return the respective slip class with its methods:
47
47
  => 341
48
48
  >> slip.currency_code
49
49
  => 9
50
+ >> slip.kind
51
+ => :bank_slip
50
52
  >> slip.value_in_cents
51
53
  => 7388
52
54
  >> slip.value
@@ -59,9 +61,11 @@ It will return the respective slip class with its methods:
59
61
 
60
62
  ````ruby
61
63
  >> slip = VerificadorBoletoBr.check('858900000018 097802702000 323858108001 011520190292')
62
- => #<VerificadorBoletoBr::ArrecadationSlip:0x00007ff4c50c8d40 @digitable_line="858900000018 097802702000 323858108001 011520190292", @errors=[]>
64
+ => #<VerificadorBoletoBr::Slip::Arrecadation::Validity:0x00007f9f821bbd08 @digitable_line="858900000018 097802702000 323858108001 011520190292", @errors=[], @kind=:arrecadation_slip>
63
65
  >> slip.valid?
64
66
  => true
67
+ >> slip.kind
68
+ => :arrecadation_slip
65
69
  >> slip.value_in_cents
66
70
  => 10978
67
71
  >> slip.value
@@ -76,6 +80,15 @@ It will return the respective slip class with its methods:
76
80
 
77
81
  You can access the slip classes directly if you want.
78
82
 
83
+ ## Assembling Digitable Line from BarCode
84
+
85
+ ````ruby
86
+ slip = VerificadorBoletoBr.translate_barcode('34196773300001455851090806185172938349558000')
87
+ => #<VerificadorBoletoBr::Slip::Bank::CodeAssembly:0x00007f9f84810990 @code="34196773300001455851090806185172938349558000">
88
+ >> slip.digitable_line
89
+ => "34191090810618517293683495580009677330000145585"
90
+ ````
91
+
79
92
  ## Special Feature
80
93
  Some bank slips do not validate the global digit well (anybody, feel free to explain me if my theory is correct) for example credit card slips (eg: NuBank). It may be because credit card bills can be paid with any value and global verification ensures that the value is also correct. This method allows to validate bank slips without global digit validation:
81
94
 
@@ -0,0 +1,45 @@
1
+ module VerificadorBoletoBr
2
+ module Slip
3
+ module Arrecadation
4
+ class CodeAssembly
5
+
6
+ include VerificadorBoletoBr::Calculus::Module10
7
+ include VerificadorBoletoBr::Calculus::Module11
8
+
9
+ def initialize(code)
10
+ @code = code
11
+ end
12
+
13
+ def treated_group
14
+ @code.scan(/.{1,11}/m)
15
+ end
16
+
17
+ def treated_code
18
+ treated_group.map {|partial| partial << "0" }.join
19
+ end
20
+
21
+ def digitable_line
22
+ result = ""
23
+ treated_group.each do |group|
24
+ result += group + send(bacen_module, group).to_s
25
+ end
26
+ result
27
+ end
28
+
29
+ def bacen_module
30
+ case treated_code[2]
31
+ when '6'
32
+ 'modulo10'
33
+ when '7'
34
+ 'modulo10'
35
+ when '8'
36
+ 'modulo11'
37
+ when '9'
38
+ 'modulo11'
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
45
+
@@ -0,0 +1,134 @@
1
+ require 'json'
2
+
3
+ module VerificadorBoletoBr
4
+ module Slip
5
+ module Arrecadation
6
+ class Validity
7
+
8
+ include VerificadorBoletoBr::Operationals
9
+ include VerificadorBoletoBr::Calculus::Module10
10
+ include VerificadorBoletoBr::Calculus::Module11
11
+
12
+ attr_accessor :digitable_line, :kind, :errors
13
+
14
+ def initialize(cod)
15
+ @digitable_line = cod
16
+ raise ArgumentError, 'Expected String' unless @digitable_line.class.eql?(String)
17
+ raise ArgumentError, 'Invalid Digitable Line' unless clean_digitable_line.size == 48
18
+ raise ArgumentError, 'Boleto Não é de Arrecadação' unless @digitable_line[0] == '8'
19
+
20
+ @errors = []
21
+ @kind = :arrecadation_slip
22
+ end
23
+
24
+ def clean_digitable_line
25
+ clean_masks(@digitable_line)
26
+ end
27
+
28
+ def verification_digit
29
+ clean_digitable_line[3].to_i
30
+ end
31
+
32
+ def value_in_cents
33
+ return nil unless valid?
34
+ digitable_line_without_dvs[4..14].to_i
35
+ end
36
+
37
+ def value
38
+ return nil unless valid?
39
+ value_in_cents.to_f / 100
40
+ end
41
+
42
+ def due_date
43
+ begin
44
+ Date.parse(digitable_line_without_dvs[-6..-1])
45
+ rescue
46
+ nil
47
+ end
48
+ end
49
+
50
+ def segment
51
+ case clean_digitable_line[1]
52
+ when '1'
53
+ 'Prefeitura'
54
+ when '2'
55
+ 'Saneamento'
56
+ when '3'
57
+ 'Energia Elétrica e Gás'
58
+ when '4'
59
+ 'Telefonia'
60
+ when '5'
61
+ 'Órgãos Governamentais'
62
+ when '6'
63
+ 'Empresas / Órgãos com CNPJ.'
64
+ when '7'
65
+ 'Multa de trânsito'
66
+ when '9'
67
+ 'Uso exclusivo do banco'
68
+ end
69
+ end
70
+
71
+ def identification
72
+ begin
73
+ JSON.parse(File.read('lib/verificador_boleto_br/data/Dealerships.json'))
74
+ .select { |d| d['code'] == clean_digitable_line[15..18] && d['segment'] == clean_digitable_line[1].to_i }[0]["dealership"]
75
+ rescue
76
+ "Boleto de #{segment}"
77
+ end
78
+ end
79
+
80
+ def bacen_module
81
+ case clean_digitable_line[2]
82
+ when '6'
83
+ 'modulo10'
84
+ when '7'
85
+ 'modulo10'
86
+ when '8'
87
+ 'modulo11'
88
+ when '9'
89
+ 'modulo11'
90
+ end
91
+ end
92
+
93
+ def valid?
94
+ global_validity && !groups_validity.map { |group| group[:valid] }.include?(false)
95
+ end
96
+
97
+ # Duplicate just for mantaining module methods
98
+ def valid_without_global?
99
+ valid?
100
+ end
101
+
102
+ def groups_validity
103
+ grouped_digitable_line.map do |group|
104
+ dv = send(bacen_module, group[:num]).to_s
105
+ valid = dv.eql?(group[:dv])
106
+ errors << "Campo #{group[:group]}" unless valid
107
+ {
108
+ group: group[:group],
109
+ valid: valid
110
+ }
111
+ end
112
+ end
113
+
114
+ def global_validity
115
+ send(bacen_module, digitable_line_without_dvs[0..2] + digitable_line_without_dvs[4..-1]) == verification_digit
116
+ end
117
+
118
+ def grouped_digitable_line
119
+ clean_digitable_line.scan(/.{1,12}/).each_with_index.map do |group, index|
120
+ {
121
+ group: index,
122
+ num: group[0..-2],
123
+ dv: group[-1]
124
+ }
125
+ end
126
+ end
127
+
128
+ def digitable_line_without_dvs
129
+ grouped_digitable_line.map { |group| group[:num] }.join
130
+ end
131
+ end
132
+ end
133
+ end
134
+ end
@@ -0,0 +1,23 @@
1
+ module VerificadorBoletoBr
2
+ module Slip
3
+ module Bank
4
+ class CodeAssembly
5
+ include VerificadorBoletoBr::Calculus::Module10
6
+ include VerificadorBoletoBr::Calculus::Module11
7
+
8
+ attr_accessor :code
9
+
10
+ def initialize(code)
11
+ @code = code
12
+ end
13
+
14
+ def digitable_line
15
+ block_1 = code[0..3] + code[19..23] + modulo10(code[0..3] + code[19..23]).to_s
16
+ block_2 = code[24..33] + modulo10(code[24..33]).to_s
17
+ block_3 = code[34..-1] + modulo10(code[34..-1]).to_s
18
+ block_1 + block_2 + block_3 + code[4..18]
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,113 @@
1
+ module VerificadorBoletoBr
2
+ module Slip
3
+ module Bank
4
+ class Validity
5
+ include VerificadorBoletoBr::Operationals
6
+ include VerificadorBoletoBr::Calculus::Module10
7
+ include VerificadorBoletoBr::Calculus::Module11
8
+
9
+ attr_accessor :digitable_line, :kind, :errors
10
+
11
+ def initialize(cod)
12
+ @digitable_line = cod
13
+ raise ArgumentError, 'Expected String' unless @digitable_line.class.eql?(String)
14
+ raise ArgumentError, 'Invalid Digitable Line' unless clean_digitable_line.size == 47
15
+
16
+ @kind = :bank_slip
17
+ end
18
+
19
+ def clean_digitable_line
20
+ clean_masks(@digitable_line)
21
+ end
22
+
23
+ def bank_code
24
+ clean_digitable_line[0..2].to_i
25
+ end
26
+
27
+ def currency_code
28
+ clean_digitable_line[3].to_i
29
+ end
30
+
31
+ def verification_digit
32
+ clean_digitable_line[32].to_i
33
+ end
34
+
35
+ def value_in_cents
36
+ return nil unless valid?
37
+ clean_digitable_line[37..-1].to_i
38
+ end
39
+
40
+ def value
41
+ return nil unless valid?
42
+ value_in_cents.to_f / 100
43
+ end
44
+
45
+ def block_1_validity
46
+ modulo10(clean_digitable_line[0..8]).eql?clean_digitable_line[9].to_i
47
+ end
48
+
49
+ def block_2_validity
50
+ modulo10(clean_digitable_line[10..19]).eql?clean_digitable_line[20].to_i
51
+ end
52
+
53
+ def block_3_validity
54
+ modulo10(clean_digitable_line[21..30]).eql?clean_digitable_line[31].to_i
55
+ end
56
+
57
+ def global_validity
58
+ str = ""
59
+ str += clean_digitable_line[0..2]
60
+ str += clean_digitable_line[3..3]
61
+ str += clean_digitable_line[32..32]
62
+ str += clean_digitable_line[33..36]
63
+ str += clean_digitable_line[37..46]
64
+ str += clean_digitable_line[4..8]
65
+ str += clean_digitable_line[10..19]
66
+ str += clean_digitable_line[21..30]
67
+ modulo11(str[0..3] + str[5..-1]).eql?(verification_digit)
68
+ end
69
+
70
+ def due_date
71
+ begin
72
+ bank_epoque(clean_digitable_line[33..36].to_i)
73
+ rescue
74
+ nil
75
+ end
76
+ end
77
+
78
+ def valid?
79
+ valid_without_global? && global_validity
80
+ end
81
+
82
+ def valid_without_global?
83
+ block_1_validity && block_2_validity && block_3_validity
84
+ end
85
+
86
+ def grouped_digitable_line
87
+ [
88
+ {
89
+ group: 0,
90
+ valid: block_1_validity
91
+ },
92
+ {
93
+ group: 1,
94
+ valid: block_2_validity
95
+ },
96
+ {
97
+ group: 2,
98
+ valid: block_2_validity
99
+ },
100
+ ]
101
+ end
102
+
103
+ def segment
104
+ 'Boleto Bancário'
105
+ end
106
+
107
+ def identification
108
+ 'Boleto Bancário'
109
+ end
110
+ end
111
+ end
112
+ end
113
+ end
@@ -1,3 +1,3 @@
1
1
  module VerificadorBoletoBr
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
3
3
  end
@@ -2,20 +2,34 @@ require_relative "./verificador_boleto_br/version"
2
2
  require_relative "./verificador_boleto_br/operationals"
3
3
  require_relative "./verificador_boleto_br/calculus/module10"
4
4
  require_relative "./verificador_boleto_br/calculus/module11"
5
- require_relative "./verificador_boleto_br/arrecadation_slip"
6
- require_relative "./verificador_boleto_br/bank_slip"
5
+ require_relative "./verificador_boleto_br/slip/arrecadation/code_assembly"
6
+ require_relative "./verificador_boleto_br/slip/arrecadation/validity"
7
+ require_relative "./verificador_boleto_br/slip/bank/code_assembly"
8
+ require_relative "./verificador_boleto_br/slip/bank/validity"
7
9
 
8
10
  require 'date'
9
11
 
10
12
  module VerificadorBoletoBr
11
13
  include Operationals
12
- def self.check(digitable_line)
13
- if digitable_line.gsub(/( |\.|-)/, '').size.eql?(47)
14
- BankSlip.new(digitable_line)
15
- elsif digitable_line.gsub(/( |\.|-)/, '').size.eql?(48)
16
- ArrecadationSlip.new(digitable_line)
14
+ def self.check(code)
15
+ clean_code = code.gsub(/( |\.|-)/, '')
16
+ if clean_code.size.eql?(47)
17
+ VerificadorBoletoBr::Slip::Bank::Validity.new(code)
18
+ elsif clean_code.size.eql?(48)
19
+ VerificadorBoletoBr::Slip::Arrecadation::Validity.new(code)
17
20
  else
18
21
  raise ArgumentError, 'Invalid Digitable Line'
19
22
  end
20
23
  end
24
+
25
+ def self.translate_barcode(code)
26
+ clean_code = code.gsub(/( |\.|-)/, '')
27
+ if clean_code.size.eql?(44) && clean_code[0] != '8'
28
+ VerificadorBoletoBr::Slip::Bank::CodeAssembly.new(code)
29
+ elsif clean_code.size.eql?(44) && clean_code[0] == '8'
30
+ VerificadorBoletoBr::Slip::Arrecadation::CodeAssembly.new(code)
31
+ else
32
+ raise ArgumentError, 'Invalid Barcode'
33
+ end
34
+ end
21
35
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: verificador_boleto_br
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gabriel Hamdan
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-04-11 00:00:00.000000000 Z
11
+ date: 2019-04-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -71,13 +71,15 @@ files:
71
71
  - bin/console
72
72
  - bin/setup
73
73
  - lib/verificador_boleto_br.rb
74
- - lib/verificador_boleto_br/arrecadation_slip.rb
75
- - lib/verificador_boleto_br/bank_slip.rb
76
74
  - lib/verificador_boleto_br/calculus/module10.rb
77
75
  - lib/verificador_boleto_br/calculus/module11.rb
78
76
  - lib/verificador_boleto_br/data/Banks.json
79
77
  - lib/verificador_boleto_br/data/Dealerships.json
80
78
  - lib/verificador_boleto_br/operationals.rb
79
+ - lib/verificador_boleto_br/slip/arrecadation/code_assembly.rb
80
+ - lib/verificador_boleto_br/slip/arrecadation/validity.rb
81
+ - lib/verificador_boleto_br/slip/bank/code_assembly.rb
82
+ - lib/verificador_boleto_br/slip/bank/validity.rb
81
83
  - lib/verificador_boleto_br/version.rb
82
84
  - verificador_boleto_br.gemspec
83
85
  homepage: https://github.com/Hamdan85/VerificadorBoletoBr
@@ -1,129 +0,0 @@
1
- require 'json'
2
-
3
- module VerificadorBoletoBr
4
- class ArrecadationSlip
5
-
6
- include VerificadorBoletoBr::Operationals
7
- include VerificadorBoletoBr::Calculus::Module10
8
- include VerificadorBoletoBr::Calculus::Module11
9
-
10
- attr_accessor :digitable_line, :errors
11
-
12
- def initialize(cod)
13
- @digitable_line = cod
14
- raise ArgumentError, 'Expected String' unless @digitable_line.class.eql?(String)
15
- raise ArgumentError, 'Invalid Digitable Line' unless clean_digitable_line.size == 48
16
- raise ArgumentError, 'Boleto Não é de Arrecadação' unless @digitable_line[0] == '8'
17
-
18
- @errors = []
19
- end
20
-
21
- def clean_digitable_line
22
- clean_masks(@digitable_line)
23
- end
24
-
25
- def verification_digit
26
- clean_digitable_line[3].to_i
27
- end
28
-
29
- def value_in_cents
30
- return nil unless valid?
31
- digitable_line_without_dvs[4..14].to_i
32
- end
33
-
34
- def value
35
- return nil unless valid?
36
- value_in_cents.to_f / 100
37
- end
38
-
39
- def due_date
40
- begin
41
- Date.parse(digitable_line_without_dvs[-6..-1])
42
- rescue
43
- nil
44
- end
45
- end
46
-
47
- def segment
48
- case clean_digitable_line[1]
49
- when '1'
50
- 'Prefeitura'
51
- when '2'
52
- 'Saneamento'
53
- when '3'
54
- 'Energia Elétrica e Gás'
55
- when '4'
56
- 'Telefonia'
57
- when '5'
58
- 'Órgãos Governamentais'
59
- when '6'
60
- 'Empresas / Órgãos com CNPJ.'
61
- when '7'
62
- 'Multa de trânsito'
63
- when '9'
64
- 'Uso exclusivo do banco'
65
- end
66
- end
67
-
68
- def identification
69
- begin
70
- JSON.parse(File.read('lib/verificador_boleto_br/data/Dealerships.json'))
71
- .select { |d| d['code'] == clean_digitable_line[15..18] && d['segment'] == clean_digitable_line[1].to_i }[0]["dealership"]
72
- rescue
73
- "Boleto de #{segment}"
74
- end
75
- end
76
-
77
- def bacen_module
78
- case clean_digitable_line[2]
79
- when '6'
80
- 'modulo10'
81
- when '7'
82
- 'modulo10'
83
- when '8'
84
- 'modulo11'
85
- when '9'
86
- 'modulo11'
87
- end
88
- end
89
-
90
- def valid?
91
- global_validity && !groups_validity.map { |group| group[:valid] }.include?(false)
92
- end
93
-
94
- # Duplicate just for mantaining module methods
95
- def valid_without_global?
96
- valid?
97
- end
98
-
99
- def groups_validity
100
- grouped_digitable_line.map do |group|
101
- dv = send(bacen_module, group[:num]).to_s
102
- valid = dv.eql?(group[:dv])
103
- errors << "Campo #{group[:group]}" unless valid
104
- {
105
- group: group[:group],
106
- valid: valid
107
- }
108
- end
109
- end
110
-
111
- def global_validity
112
- send(bacen_module, digitable_line_without_dvs[0..2] + digitable_line_without_dvs[4..-1]) == verification_digit
113
- end
114
-
115
- def grouped_digitable_line
116
- clean_digitable_line.scan(/.{1,12}/).each_with_index.map do |group, index|
117
- {
118
- group: index,
119
- num: group[0..-2],
120
- dv: group[-1]
121
- }
122
- end
123
- end
124
-
125
- def digitable_line_without_dvs
126
- grouped_digitable_line.map { |group| group[:num] }.join
127
- end
128
- end
129
- end
@@ -1,108 +0,0 @@
1
- module VerificadorBoletoBr
2
- class BankSlip
3
- include VerificadorBoletoBr::Operationals
4
- include VerificadorBoletoBr::Calculus::Module10
5
- include VerificadorBoletoBr::Calculus::Module11
6
-
7
- attr_accessor :digitable_line, :errors
8
-
9
- def initialize(cod)
10
- @digitable_line = cod
11
- raise ArgumentError, 'Expected String' unless @digitable_line.class.eql?(String)
12
- raise ArgumentError, 'Invalid Digitable Line' unless clean_digitable_line.size == 47
13
- end
14
-
15
- def clean_digitable_line
16
- clean_masks(@digitable_line)
17
- end
18
-
19
- def bank_code
20
- clean_digitable_line[0..2].to_i
21
- end
22
-
23
- def currency_code
24
- clean_digitable_line[3].to_i
25
- end
26
-
27
- def verification_digit
28
- clean_digitable_line[32].to_i
29
- end
30
-
31
- def value_in_cents
32
- return nil unless valid?
33
- clean_digitable_line[37..-1].to_i
34
- end
35
-
36
- def value
37
- return nil unless valid?
38
- value_in_cents.to_f / 100
39
- end
40
-
41
- def block_1_validity
42
- modulo10(clean_digitable_line[0..8]).eql?clean_digitable_line[9].to_i
43
- end
44
-
45
- def block_2_validity
46
- modulo10(clean_digitable_line[10..19]).eql?clean_digitable_line[20].to_i
47
- end
48
-
49
- def block_3_validity
50
- modulo10(clean_digitable_line[21..30]).eql?clean_digitable_line[31].to_i
51
- end
52
-
53
- def global_validity
54
- str = ""
55
- str += clean_digitable_line[0..2]
56
- str += clean_digitable_line[3..3]
57
- str += clean_digitable_line[32..32]
58
- str += clean_digitable_line[33..36]
59
- str += clean_digitable_line[37..46]
60
- str += clean_digitable_line[4..8]
61
- str += clean_digitable_line[10..19]
62
- str += clean_digitable_line[21..30]
63
-
64
- modulo11(str[0..3] + str[5..-1]).eql?(verification_digit)
65
- end
66
-
67
- def due_date
68
- begin
69
- bank_epoque(clean_digitable_line[33..36].to_i)
70
- rescue
71
- nil
72
- end
73
- end
74
-
75
- def valid?
76
- valid_without_global? && global_validity
77
- end
78
-
79
- def valid_without_global?
80
- block_1_validity && block_2_validity && block_3_validity
81
- end
82
-
83
- def grouped_digitable_line
84
- [
85
- {
86
- group: 0,
87
- valid: block_1_validity
88
- },
89
- {
90
- group: 1,
91
- valid: block_2_validity
92
- },
93
- {
94
- group: 2,
95
- valid: block_2_validity
96
- },
97
- ]
98
- end
99
-
100
- def segment
101
- 'Boleto Bancário'
102
- end
103
-
104
- def identification
105
- 'Boleto Bancário'
106
- end
107
- end
108
- end