boleto_bancario 0.0.1.beta → 0.0.2
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.
- checksums.yaml +7 -0
- data/.gitignore +3 -2
- data/.travis.yml +10 -0
- data/Changelog.markdown +4 -0
- data/Gemfile +1 -1
- data/Planning.markdown +18 -86
- data/README.markdown +107 -55
- data/Rakefile +7 -1
- data/TODO.markdown +15 -1
- data/boleto_bancario.gemspec +7 -3
- data/lib/boleto_bancario.rb +27 -15
- data/lib/boleto_bancario/calculos/modulo11_fator_de9a2.rb +65 -0
- data/lib/boleto_bancario/calculos/modulo11_fator_de9a2_resto_x.rb +5 -51
- data/lib/boleto_bancario/calculos/modulo_numero_de_controle.rb +117 -0
- data/lib/boleto_bancario/core/banco_brasil.rb +30 -5
- data/lib/boleto_bancario/core/banrisul.rb +182 -0
- data/lib/boleto_bancario/core/boleto.rb +67 -34
- data/lib/boleto_bancario/core/bradesco.rb +28 -16
- data/lib/boleto_bancario/core/caixa.rb +233 -0
- data/lib/boleto_bancario/core/hsbc.rb +170 -0
- data/lib/boleto_bancario/core/itau.rb +20 -10
- data/lib/boleto_bancario/core/real.rb +177 -0
- data/lib/boleto_bancario/core/santander.rb +19 -22
- data/lib/boleto_bancario/core/sicoob.rb +172 -0
- data/lib/boleto_bancario/core/sicredi.rb +290 -0
- data/lib/boleto_bancario/version.rb +1 -2
- data/spec/boleto_bancario/calculos/modulo10_spec.rb +4 -0
- data/spec/boleto_bancario/calculos/modulo11_fator_de2a9_spec.rb +6 -0
- data/spec/boleto_bancario/calculos/modulo11_fator_de9a2_spec.rb +31 -0
- data/spec/boleto_bancario/calculos/modulo_numero_de_controle_spec.rb +37 -0
- data/spec/boleto_bancario/core/banco_brasil_spec.rb +59 -65
- data/spec/boleto_bancario/core/banrisul_spec.rb +129 -0
- data/spec/boleto_bancario/core/boleto_spec.rb +148 -32
- data/spec/boleto_bancario/core/bradesco_spec.rb +29 -36
- data/spec/boleto_bancario/core/caixa_spec.rb +111 -0
- data/spec/boleto_bancario/core/hsbc_spec.rb +72 -0
- data/spec/boleto_bancario/core/itau_spec.rb +33 -36
- data/spec/boleto_bancario/core/real_spec.rb +104 -0
- data/spec/boleto_bancario/core/santander_spec.rb +26 -24
- data/spec/boleto_bancario/core/sicoob_spec.rb +111 -0
- data/spec/boleto_bancario/core/sicredi_spec.rb +149 -0
- data/spec/inheritance/banco_brasil_spec.rb +22 -0
- data/spec/inheritance/banrisul_spec.rb +22 -0
- data/spec/inheritance/boleto_spec.rb +15 -0
- data/spec/inheritance/bradesco_spec.rb +22 -0
- data/spec/inheritance/caixa_spec.rb +22 -0
- data/spec/inheritance/hsbc_spec.rb +22 -0
- data/spec/inheritance/itau_spec.rb +22 -0
- data/spec/inheritance/real_spec.rb +22 -0
- data/spec/inheritance/santander_spec.rb +22 -0
- data/spec/inheritance/sicoob_spec.rb +22 -0
- data/spec/inheritance/sicredi_spec.rb +22 -0
- data/spec/shared_examples/boleto_bancario_shared_example.rb +21 -34
- data/spec/spec_helper.rb +2 -2
- metadata +119 -47
- data/.rvmrc +0 -1
@@ -0,0 +1,172 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module BoletoBancario
|
3
|
+
module Core
|
4
|
+
# Implementação de emissão de boleto bancário pelo Banco Sicoob.
|
5
|
+
#
|
6
|
+
# === Documentação Implementada
|
7
|
+
#
|
8
|
+
# A documentação na qual essa implementação foi baseada está localizada na pasta
|
9
|
+
# 'documentacoes_dos_boletos/sicoob' dentro dessa biblioteca.
|
10
|
+
#
|
11
|
+
# === Código da Carteira
|
12
|
+
#
|
13
|
+
# '1' - Cobrança SEM registro
|
14
|
+
# '9' - Cobrança COM registro
|
15
|
+
#
|
16
|
+
class Sicoob < Boleto
|
17
|
+
# Tamanho máximo de uma agência no Banco Sicoob.
|
18
|
+
# <b>Método criado justamente para ficar documentado o tamanho máximo aceito até a data corrente.</b>
|
19
|
+
#
|
20
|
+
# @return [Fixnum] 4
|
21
|
+
#
|
22
|
+
def self.tamanho_maximo_agencia
|
23
|
+
4
|
24
|
+
end
|
25
|
+
|
26
|
+
# Tamanho máximo do codigo cedente no Banco Sicoob.
|
27
|
+
# <b>Método criado justamente para ficar documentado o tamanho máximo aceito até a data corrente.</b>
|
28
|
+
#
|
29
|
+
# @return [Fixnum] 7
|
30
|
+
#
|
31
|
+
def self.tamanho_maximo_codigo_cedente
|
32
|
+
7
|
33
|
+
end
|
34
|
+
|
35
|
+
# Tamanho máximo do numero do documento no Boleto.
|
36
|
+
# <b>Método criado justamente para ficar documentado o tamanho máximo aceito até a data corrente.</b>
|
37
|
+
#
|
38
|
+
# @return [Fixnum] 6
|
39
|
+
#
|
40
|
+
def self.tamanho_maximo_numero_documento
|
41
|
+
6
|
42
|
+
end
|
43
|
+
|
44
|
+
# <b>Carteiras suportadas.</b>
|
45
|
+
#
|
46
|
+
# <b>Método criado para validar se a carteira informada é suportada.</b>
|
47
|
+
#
|
48
|
+
# @return [Array]
|
49
|
+
#
|
50
|
+
def self.carteiras_suportadas
|
51
|
+
%w[1 9]
|
52
|
+
end
|
53
|
+
|
54
|
+
# Validações para os campos abaixo:
|
55
|
+
#
|
56
|
+
# * Agencia
|
57
|
+
# * Codigo Cedente
|
58
|
+
# * Número do documento
|
59
|
+
#
|
60
|
+
# Se você quiser sobrescrever os metodos, <b>ficará a sua responsabilidade.</b>
|
61
|
+
# Basta você sobrescrever os métodos de validação:
|
62
|
+
#
|
63
|
+
# class Sicoob < BoletoBancario::Core::Sicoob
|
64
|
+
# def self.tamanho_maximo_agencia
|
65
|
+
# 6
|
66
|
+
# end
|
67
|
+
#
|
68
|
+
# def self.tamanho_maximo_codigo_cedente
|
69
|
+
# 9
|
70
|
+
# end
|
71
|
+
#
|
72
|
+
# def self.tamanho_maximo_numero_documento
|
73
|
+
# 10
|
74
|
+
# end
|
75
|
+
# end
|
76
|
+
#
|
77
|
+
# Obs.: Mudar as regras de validação podem influenciar na emissão do boleto em si.
|
78
|
+
# Talvez você precise analisar o efeito no #codigo_de_barras e na #linha_digitável (ambos podem ser
|
79
|
+
# sobreescritos também).
|
80
|
+
#
|
81
|
+
validates :agencia, :codigo_cedente, presence: true
|
82
|
+
|
83
|
+
validates :agencia, length: { maximum: tamanho_maximo_agencia }, if: :deve_validar_agencia?
|
84
|
+
validates :codigo_cedente, length: { maximum: tamanho_maximo_codigo_cedente }, if: :deve_validar_codigo_cedente?
|
85
|
+
validates :numero_documento, length: { maximum: tamanho_maximo_numero_documento }, if: :deve_validar_numero_documento?
|
86
|
+
|
87
|
+
validates :carteira, inclusion: { in: ->(object) { object.class.carteiras_suportadas } }, if: :deve_validar_carteira?
|
88
|
+
|
89
|
+
# @return [String] 4 caracteres
|
90
|
+
#
|
91
|
+
def agencia
|
92
|
+
@agencia.to_s.rjust(4, '0') if @agencia.present?
|
93
|
+
end
|
94
|
+
|
95
|
+
# @return [String] 7 caracteres
|
96
|
+
#
|
97
|
+
def codigo_cedente
|
98
|
+
@codigo_cedente.to_s.rjust(7, '0') if @codigo_cedente.present?
|
99
|
+
end
|
100
|
+
|
101
|
+
# @return [String] 6 caracteres
|
102
|
+
#
|
103
|
+
def numero_documento
|
104
|
+
@numero_documento.to_s.rjust(6, '0') if @numero_documento.present?
|
105
|
+
end
|
106
|
+
|
107
|
+
# @return [String] Código do Banco descrito na documentação.
|
108
|
+
#
|
109
|
+
def codigo_banco
|
110
|
+
'756'
|
111
|
+
end
|
112
|
+
|
113
|
+
# @return [String] Dígito do código do banco descrito na documentação.
|
114
|
+
#
|
115
|
+
def digito_codigo_banco
|
116
|
+
'0'
|
117
|
+
end
|
118
|
+
|
119
|
+
# Campo Agência / Código do Cedente
|
120
|
+
#
|
121
|
+
# @return [String]
|
122
|
+
#
|
123
|
+
def agencia_codigo_cedente
|
124
|
+
"#{agencia} / #{codigo_cedente}"
|
125
|
+
end
|
126
|
+
|
127
|
+
# O nosso número descrino na documentação é formado pelo dois ultimos digitos do ano autal e
|
128
|
+
# por outros 6 digitos que o clinte usara para numerar os documentos, assim sendo composto por 8 dígitos.
|
129
|
+
#
|
130
|
+
# @return [String]
|
131
|
+
#
|
132
|
+
def nosso_numero
|
133
|
+
"#{ano}#{numero_documento}"
|
134
|
+
end
|
135
|
+
|
136
|
+
# Ano atual usado para os calculos
|
137
|
+
#
|
138
|
+
# @return [String]
|
139
|
+
#
|
140
|
+
def ano
|
141
|
+
Date.today.strftime('%y')
|
142
|
+
end
|
143
|
+
|
144
|
+
# === Código de barras do banco
|
145
|
+
#
|
146
|
+
# ___________________________________________________________
|
147
|
+
# | Posição | Tamanho | Descrição |
|
148
|
+
# |---------|---------|---------------------------------------|
|
149
|
+
# | 20 - 20 | 01 | Código da carteira |
|
150
|
+
# | 21 - 24 | 04 | Código da agência |
|
151
|
+
# | 25 - 26 | 02 | Código da modalidade de cobrança (01) |
|
152
|
+
# | 27 - 33 | 07 | Código do Cedente |
|
153
|
+
# | 34 - 41 | 08 | Nosso Número do título |
|
154
|
+
# | 42 - 44 | 03 | Número da Parcela do Título (001) |
|
155
|
+
# |___________________________________________________________|
|
156
|
+
#
|
157
|
+
# @return [String]
|
158
|
+
#
|
159
|
+
def codigo_de_barras_do_banco
|
160
|
+
"#{carteira}#{agencia}#{modalidade_cobranca}#{codigo_cedente}#{nosso_numero}#{parcelas}"
|
161
|
+
end
|
162
|
+
|
163
|
+
def modalidade_cobranca
|
164
|
+
'01'
|
165
|
+
end
|
166
|
+
|
167
|
+
def parcelas
|
168
|
+
'001'
|
169
|
+
end
|
170
|
+
end
|
171
|
+
end
|
172
|
+
end
|
@@ -0,0 +1,290 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module BoletoBancario
|
3
|
+
module Core
|
4
|
+
# Implementação de emissão de boleto bancário pela Cooperativa de Credito Sicredi.
|
5
|
+
#
|
6
|
+
# === Documentação Implementada
|
7
|
+
#
|
8
|
+
# A documentação na qual essa implementação foi baseada está localizada na pasta
|
9
|
+
# 'documentacoes_dos_boletos/sicredi' dentro dessa biblioteca.
|
10
|
+
# === Carteiras suportadas
|
11
|
+
#
|
12
|
+
# Segue abaixo as carteiras suportadas pelo Sicredi <b>seguindo a documentação</b>:
|
13
|
+
#
|
14
|
+
# __________________________________________
|
15
|
+
# | Carteira | Descrição |
|
16
|
+
# | 03 | Cobrança Simples sem registro |
|
17
|
+
# | C | Cobrança Simples sem registro |
|
18
|
+
# |__________________________________________|
|
19
|
+
#
|
20
|
+
class Sicredi < Boleto
|
21
|
+
# Código do posto da cooperativa de crédito
|
22
|
+
attr_accessor :posto
|
23
|
+
|
24
|
+
# Byte de identificação do cedente do bloqueto utilizado para compor o nosso número.
|
25
|
+
attr_accessor :byte_id
|
26
|
+
|
27
|
+
# Tamanho máximo de uma agência no Sicredi.
|
28
|
+
# <b>Método criado justamente para ficar documentado o tamanho máximo aceito até a data corrente.</b>
|
29
|
+
#
|
30
|
+
# @return [Fixnum] 4
|
31
|
+
#
|
32
|
+
def self.tamanho_maximo_agencia
|
33
|
+
4
|
34
|
+
end
|
35
|
+
|
36
|
+
# Tamanho máximo da conta corrente no Boleto.
|
37
|
+
# <b>Método criado justamente para ficar documentado o tamanho máximo aceito até a data corrente.</b>
|
38
|
+
#
|
39
|
+
# @return [Fixnum] 5
|
40
|
+
#
|
41
|
+
def self.tamanho_maximo_conta_corrente
|
42
|
+
5
|
43
|
+
end
|
44
|
+
|
45
|
+
# Tamanho máximo do posto no Boleto.
|
46
|
+
# <b>Método criado justamente para ficar documentado o tamanho máximo aceito até a data corrente.</b>
|
47
|
+
#
|
48
|
+
# @return [Fixnum] 2
|
49
|
+
#
|
50
|
+
def self.tamanho_maximo_posto
|
51
|
+
2
|
52
|
+
end
|
53
|
+
|
54
|
+
# <b>Byte Identificadores suportados.</b>
|
55
|
+
# <b>Método criado para validar se o byte identificador informado é suportado.</b>
|
56
|
+
#
|
57
|
+
# @return [Array]
|
58
|
+
#
|
59
|
+
def self.byte_id_suportados
|
60
|
+
%w[2 3 4 5 6 7 8 9]
|
61
|
+
end
|
62
|
+
|
63
|
+
# <b>Carteiras suportadas.</b>
|
64
|
+
# <b>Método criado para validar se a carteira informada é suportada.</b>
|
65
|
+
#
|
66
|
+
# @return [Array]
|
67
|
+
#
|
68
|
+
def self.carteiras_suportadas
|
69
|
+
%w[03 C]
|
70
|
+
end
|
71
|
+
|
72
|
+
# Tamanho máximo do número do documento emitido no Boleto.
|
73
|
+
# <b>Método criado justamente para ficar documentado o tamanho máximo aceito até a data corrente.</b>
|
74
|
+
#
|
75
|
+
# @return [Fixnum] 5
|
76
|
+
#
|
77
|
+
def self.tamanho_maximo_numero_documento
|
78
|
+
5
|
79
|
+
end
|
80
|
+
|
81
|
+
# Validações para os campos abaixo:
|
82
|
+
#
|
83
|
+
# * Agencia
|
84
|
+
# * Conta Corrente
|
85
|
+
# * Posto
|
86
|
+
# * Byte Identificador
|
87
|
+
# * Carteira
|
88
|
+
# * Número do documento
|
89
|
+
#
|
90
|
+
# Se você quiser sobrescrever os metodos, <b>ficará a sua responsabilidade.</b>
|
91
|
+
# Basta você sobrescrever os métodos de validação:
|
92
|
+
#
|
93
|
+
# class Sicredi < BoletoBancario::Core::Sicredi
|
94
|
+
# def self.tamanho_maximo_agencia
|
95
|
+
# 5
|
96
|
+
# end
|
97
|
+
#
|
98
|
+
# def self.tamanho_maximo_conta_corrente
|
99
|
+
# 7
|
100
|
+
# end
|
101
|
+
#
|
102
|
+
# def self.tamanho_maximo_posto
|
103
|
+
# 2
|
104
|
+
# end
|
105
|
+
#
|
106
|
+
# def self.byte_id_suportados
|
107
|
+
# %w[1 12 123]
|
108
|
+
# end
|
109
|
+
#
|
110
|
+
# def self.carteiras_suportadas
|
111
|
+
# %w[45 89]
|
112
|
+
# end
|
113
|
+
#
|
114
|
+
# def self.tamanho_maximo_numero_documento
|
115
|
+
# 10
|
116
|
+
# end
|
117
|
+
# end
|
118
|
+
#
|
119
|
+
# Obs.: Mudar as regras de validação podem influenciar na emissão do boleto em si.
|
120
|
+
# Talvez você precise analisar o efeito no #codigo_de_barras e na #linha_digitável (ambos podem ser
|
121
|
+
# sobreescritos também).
|
122
|
+
#
|
123
|
+
validates :agencia, :conta_corrente, :posto, :byte_id, presence: true
|
124
|
+
|
125
|
+
validates :agencia, length: { maximum: tamanho_maximo_agencia }, if: :deve_validar_agencia?
|
126
|
+
validates :conta_corrente, length: { maximum: tamanho_maximo_conta_corrente }, if: :deve_validar_conta_corrente?
|
127
|
+
validates :posto, length: { maximum: tamanho_maximo_posto }, if: :deve_validar_posto?
|
128
|
+
validates :numero_documento, length: { maximum: tamanho_maximo_numero_documento }, if: :deve_validar_numero_documento?
|
129
|
+
|
130
|
+
validates :carteira, inclusion: { in: ->(object) { object.class.carteiras_suportadas } }, if: :deve_validar_carteira?
|
131
|
+
validates :byte_id, inclusion: { in: ->(object) { object.class.byte_id_suportados } }, if: :deve_validar_byte_id?
|
132
|
+
|
133
|
+
# @return [String] 4 caracteres
|
134
|
+
#
|
135
|
+
def agencia
|
136
|
+
@agencia.to_s.rjust(4, '0') if @agencia.present?
|
137
|
+
end
|
138
|
+
|
139
|
+
# @return [String] 5 caracteres
|
140
|
+
#
|
141
|
+
def conta_corrente
|
142
|
+
@conta_corrente.to_s.rjust(5, '0') if @conta_corrente.present?
|
143
|
+
end
|
144
|
+
|
145
|
+
# @return [String] 2 caracteres
|
146
|
+
#
|
147
|
+
def posto
|
148
|
+
@posto.to_s.rjust(2, '0') if @posto.present?
|
149
|
+
end
|
150
|
+
|
151
|
+
# @return [String] 1 caracteres
|
152
|
+
#
|
153
|
+
def byte_id
|
154
|
+
@byte_id.to_s.rjust(1, '0') if @byte_id.present?
|
155
|
+
end
|
156
|
+
|
157
|
+
# @return [String] 5 caracteres
|
158
|
+
#
|
159
|
+
def numero_documento
|
160
|
+
@numero_documento.to_s.rjust(5, '0') if @numero_documento.present?
|
161
|
+
end
|
162
|
+
|
163
|
+
# A formatação da Carteira Simples é 1
|
164
|
+
#
|
165
|
+
# @return [String]
|
166
|
+
#
|
167
|
+
def carteira_formatada
|
168
|
+
tipo_carteira
|
169
|
+
end
|
170
|
+
|
171
|
+
# @return [String] Código do Banco descrito na documentação.
|
172
|
+
#
|
173
|
+
def codigo_banco
|
174
|
+
'748'
|
175
|
+
end
|
176
|
+
|
177
|
+
# @return [String] Dígito do código do banco descrito na documentação.
|
178
|
+
#
|
179
|
+
def digito_codigo_banco
|
180
|
+
'X'
|
181
|
+
end
|
182
|
+
|
183
|
+
# Campo Agência/Código Beneficiário (:conta_corrente) formatado
|
184
|
+
#
|
185
|
+
# @return [String] Campo descrito na documentação.
|
186
|
+
#
|
187
|
+
def agencia_codigo_cedente
|
188
|
+
"#{agencia}.#{posto}.#{conta_corrente}"
|
189
|
+
end
|
190
|
+
|
191
|
+
# @return [String] Código referente ao tipo de cobrança
|
192
|
+
#
|
193
|
+
def tipo_cobranca
|
194
|
+
"3" # Somente sem registro
|
195
|
+
end
|
196
|
+
|
197
|
+
# @return [String] Código referente ao tipo de carteira
|
198
|
+
#
|
199
|
+
def tipo_carteira
|
200
|
+
"1"
|
201
|
+
end
|
202
|
+
|
203
|
+
# Mostra o campo nosso número calculando o dígito verificador do nosso número. AA/BXXXXX-D onde:
|
204
|
+
# AA = Ano atual, apenas os dois ultimos digitos.
|
205
|
+
# B = Byte Identificador (2 a 9). 1 só poderá ser utilizado pela cooperativa.
|
206
|
+
# XXXXX – Número do Documento.
|
207
|
+
# D = Digito Verificador pelo módulo 11.
|
208
|
+
#
|
209
|
+
# EX: 13/200004-1
|
210
|
+
#
|
211
|
+
# @return [String]
|
212
|
+
#
|
213
|
+
def nosso_numero
|
214
|
+
"#{ano}/#{byte_id}#{numero_documento}-#{nosso_numero_dv}"
|
215
|
+
end
|
216
|
+
|
217
|
+
# Ano atual usado para os calculos
|
218
|
+
#
|
219
|
+
# @return [String]
|
220
|
+
#
|
221
|
+
def ano
|
222
|
+
Date.today.strftime('%y')
|
223
|
+
end
|
224
|
+
|
225
|
+
# Digito verificador do nosso número
|
226
|
+
# Calculado atravez do modulo 11 com peso de 2 a 9 da direta para a esquerda.
|
227
|
+
# ____________________________________________________________________________
|
228
|
+
# | | Agencia | Posto | Conta Corrente | Ano | Byte | Numero Documento |
|
229
|
+
# |---------|---------|-------|----------------|-----|------|------------------|
|
230
|
+
# | Tamanho | 04 | 02 | 05 | 02 | 01 | 05 |
|
231
|
+
# |_________|__________________________________________________________________|
|
232
|
+
#
|
233
|
+
# @return [String]
|
234
|
+
#
|
235
|
+
def nosso_numero_dv
|
236
|
+
Modulo11FatorDe2a9RestoZero.new("#{agencia}#{posto}#{conta_corrente}#{ano}#{byte_id}#{numero_documento}")
|
237
|
+
end
|
238
|
+
|
239
|
+
# === Código de barras do banco
|
240
|
+
# __________________________________________________________________________
|
241
|
+
# | Posição | Tamanho | Descrição |
|
242
|
+
# |---------|---------|------------------------------------------------------|
|
243
|
+
# | 20 – 21 | 02 | Carteira |
|
244
|
+
# | 22 – 30 | 09 | Nosso número com o digito identificador |
|
245
|
+
# | 31 – 34 | 04 | Cooperativa de crédito/agência beneficiária |
|
246
|
+
# | 35 – 36 | 02 | Posto da cooperativa de crédito/agência beneficiária |
|
247
|
+
# | 37 – 41 | 05 | Código do beneficiário |
|
248
|
+
# | 42 – 42 | 01 | Será 1 quando houver o valor do documento |
|
249
|
+
# | 43 – 43 | 01 | Fixo 0 |
|
250
|
+
# | 44 – 44 | 01 | DV do campo livre |
|
251
|
+
# |__________________________________________________________________________|
|
252
|
+
#
|
253
|
+
# @return [String]
|
254
|
+
#
|
255
|
+
def codigo_de_barras_do_banco
|
256
|
+
codigo = "#{tipo_cobranca}#{tipo_carteira}#{nosso_numero_codigo_de_barras}#{agencia}#{posto}#{conta_corrente}#{valor_expresso}0"
|
257
|
+
|
258
|
+
codigo_dv = Modulo11FatorDe2a9RestoZero.new(codigo)
|
259
|
+
|
260
|
+
"#{codigo}#{codigo_dv}"
|
261
|
+
end
|
262
|
+
|
263
|
+
def nosso_numero_codigo_de_barras
|
264
|
+
"#{ano}#{byte_id}#{numero_documento}#{nosso_numero_dv}"
|
265
|
+
end
|
266
|
+
|
267
|
+
def valor_expresso
|
268
|
+
@valor_documento.present? ? '1' : '0'
|
269
|
+
end
|
270
|
+
|
271
|
+
# Método usado para verificar se deve realizar a validação de tamanho do campo 'posto'.
|
272
|
+
# <b>Sobrescreva esse método na subclasse, caso você mesmo queira fazer as validações</b>.
|
273
|
+
#
|
274
|
+
# @return [True]
|
275
|
+
#
|
276
|
+
def deve_validar_posto?
|
277
|
+
true
|
278
|
+
end
|
279
|
+
|
280
|
+
# Método usado para verificar se deve realizar a validação de tamanho do campo 'byte_id'.
|
281
|
+
# <b>Sobrescreva esse método na subclasse, caso você mesmo queira fazer as validações</b>.
|
282
|
+
#
|
283
|
+
# @return [True]
|
284
|
+
#
|
285
|
+
def deve_validar_byte_id?
|
286
|
+
true
|
287
|
+
end
|
288
|
+
end
|
289
|
+
end
|
290
|
+
end
|