boleto_bancario 0.0.1.beta → 1.0.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 (63) hide show
  1. checksums.yaml +7 -0
  2. data/Changelog.markdown +58 -2
  3. data/README.markdown +679 -156
  4. data/lib/boleto_bancario/calculos/documento.rb +191 -0
  5. data/lib/boleto_bancario/calculos/fator_vencimento.rb +78 -31
  6. data/lib/boleto_bancario/calculos/modulo11_fator_de9a2.rb +65 -0
  7. data/lib/boleto_bancario/calculos/modulo11_fator_de9a2_resto_x.rb +5 -51
  8. data/lib/boleto_bancario/calculos/modulo_numero_de_controle.rb +117 -0
  9. data/lib/boleto_bancario/core/banco_brasil.rb +30 -5
  10. data/lib/boleto_bancario/core/banrisul.rb +182 -0
  11. data/lib/boleto_bancario/core/boleto.rb +97 -35
  12. data/lib/boleto_bancario/core/bradesco.rb +28 -16
  13. data/lib/boleto_bancario/core/c6_bank.rb +155 -0
  14. data/lib/boleto_bancario/core/caixa.rb +233 -0
  15. data/lib/boleto_bancario/core/inter.rb +155 -0
  16. data/lib/boleto_bancario/core/itau.rb +20 -10
  17. data/lib/boleto_bancario/core/nubank.rb +156 -0
  18. data/lib/boleto_bancario/core/santander.rb +19 -22
  19. data/lib/boleto_bancario/core/sicoob.rb +172 -0
  20. data/lib/boleto_bancario/core/sicredi.rb +290 -0
  21. data/lib/boleto_bancario/locales/pt-BR.yml +55 -0
  22. data/lib/boleto_bancario/renderers/base.rb +154 -0
  23. data/lib/boleto_bancario/renderers/html_renderer.rb +92 -0
  24. data/lib/boleto_bancario/renderers/pdf_renderer.rb +130 -0
  25. data/lib/boleto_bancario/renderers/png_renderer.rb +66 -0
  26. data/lib/boleto_bancario/templates/_barcode.html.erb +3 -0
  27. data/lib/boleto_bancario/templates/_cedente.html.erb +14 -0
  28. data/lib/boleto_bancario/templates/_header.html.erb +4 -0
  29. data/lib/boleto_bancario/templates/_instructions.html.erb +10 -0
  30. data/lib/boleto_bancario/templates/_payment.html.erb +36 -0
  31. data/lib/boleto_bancario/templates/_sacado.html.erb +10 -0
  32. data/lib/boleto_bancario/templates/boleto.html.erb +22 -0
  33. data/lib/boleto_bancario/templates/boleto_styles.css +18 -0
  34. data/lib/boleto_bancario/version.rb +3 -2
  35. data/lib/boleto_bancario.rb +48 -19
  36. data/lib/generators/boleto_bancario/views_generator.rb +47 -0
  37. metadata +140 -106
  38. data/.gitignore +0 -18
  39. data/.rspec +0 -1
  40. data/.rvmrc +0 -1
  41. data/Gemfile +0 -3
  42. data/Planning.markdown +0 -131
  43. data/Rakefile +0 -9
  44. data/TODO.markdown +0 -5
  45. data/boleto_bancario.gemspec +0 -25
  46. data/documentacoes_dos_boletos/Bradesco/Manual_BRADESCO.PDF +0 -0
  47. data/spec/boleto_bancario/calculos/digitos_spec.rb +0 -19
  48. data/spec/boleto_bancario/calculos/fator_vencimento_spec.rb +0 -59
  49. data/spec/boleto_bancario/calculos/fatores_de_multiplicacao_spec.rb +0 -69
  50. data/spec/boleto_bancario/calculos/linha_digitavel_spec.rb +0 -57
  51. data/spec/boleto_bancario/calculos/modulo10_spec.rb +0 -49
  52. data/spec/boleto_bancario/calculos/modulo11_fator_de2a7_spec.rb +0 -43
  53. data/spec/boleto_bancario/calculos/modulo11_fator_de2a9_resto_zero_spec.rb +0 -39
  54. data/spec/boleto_bancario/calculos/modulo11_fator_de2a9_spec.rb +0 -61
  55. data/spec/boleto_bancario/calculos/modulo11_fator_de9a2_resto_x_spec.rb +0 -37
  56. data/spec/boleto_bancario/calculos/modulo11_spec.rb +0 -19
  57. data/spec/boleto_bancario/core/banco_brasil_spec.rb +0 -383
  58. data/spec/boleto_bancario/core/boleto_spec.rb +0 -102
  59. data/spec/boleto_bancario/core/bradesco_spec.rb +0 -170
  60. data/spec/boleto_bancario/core/itau_spec.rb +0 -336
  61. data/spec/boleto_bancario/core/santander_spec.rb +0 -135
  62. data/spec/shared_examples/boleto_bancario_shared_example.rb +0 -164
  63. data/spec/spec_helper.rb +0 -14
@@ -80,17 +80,6 @@ module BoletoBancario
80
80
  12
81
81
  end
82
82
 
83
- # Tamanho máximo da carteira.
84
- # O tamanho máximo é justamente 2 porque no código de barras só é permitido 2 posições para este campo.
85
- #
86
- # <b>Método criado justamente para ficar documentado o tamanho máximo aceito até a data corrente.</b>
87
- #
88
- # @return [Fixnum] 2
89
- #
90
- def self.tamanho_maximo_carteira
91
- 3
92
- end
93
-
94
83
  # Tamanho máximo do código do cedente emitido no Boleto.
95
84
  # O tamanho máximo é justamente 7 porque no código de barras só é permitido 7 posições para este campo.
96
85
  #
@@ -102,14 +91,24 @@ module BoletoBancario
102
91
  7
103
92
  end
104
93
 
105
- # Validações de tamanho para os campos abaixo:
94
+ # <b>Carteiras suportadas.</b>
95
+ #
96
+ # <b>Método criado para validar se a carteira informada é suportada.</b>
97
+ #
98
+ # @return [Array]
99
+ #
100
+ def self.carteiras_suportadas
101
+ %w[101 102 121]
102
+ end
103
+
104
+ # Validações para os campos abaixo:
106
105
  #
107
106
  # * Número do documento
108
107
  # * Conta Corrente
109
108
  # * Agencia
110
109
  # * Carteira
111
110
  #
112
- # Se você quiser sobrescrever os tamanhos permitidos, <b>ficará a sua responsabilidade.</b>
111
+ # Se você quiser sobrescrever os metodos, <b>ficará a sua responsabilidade.</b>
113
112
  # Basta você sobrescrever os métodos de validação:
114
113
  #
115
114
  # class Santander < BoletoBancario::Core::Santander
@@ -124,6 +123,10 @@ module BoletoBancario
124
123
  # def self.tamanho_maximo_numero_documento
125
124
  # 9
126
125
  # end
126
+ #
127
+ # def self.carteiras_suportadas
128
+ # %w[101 102 121]
129
+ # end
127
130
  # end
128
131
  #
129
132
  # Obs.: Mudar as regras de validação podem influenciar na emissão do boleto em si.
@@ -135,7 +138,8 @@ module BoletoBancario
135
138
  validates :agencia, length: { maximum: tamanho_maximo_agencia }, if: :deve_validar_agencia?
136
139
  validates :codigo_cedente, length: { maximum: tamanho_maximo_codigo_cedente }, if: :deve_validar_codigo_cedente?
137
140
  validates :numero_documento, length: { maximum: tamanho_maximo_numero_documento }, if: :deve_validar_numero_documento?
138
- validates :carteira, length: { maximum: tamanho_maximo_carteira }, if: :deve_validar_carteira?
141
+
142
+ validates :carteira, inclusion: { in: ->(object) { object.class.carteiras_suportadas } }, if: :deve_validar_carteira?
139
143
 
140
144
  # @return [String] 4 caracteres
141
145
  #
@@ -155,12 +159,6 @@ module BoletoBancario
155
159
  @numero_documento.to_s.rjust(12, '0') if @numero_documento.present?
156
160
  end
157
161
 
158
- # @return [String] 3 caracteres
159
- #
160
- def carteira
161
- @carteira.to_s.rjust(3, '0') if @carteira.present?
162
- end
163
-
164
162
  # Formata a carteira dependendo se ela é registrada ou não.
165
163
  #
166
164
  # Para cobrança COM registro usar: <b>COBRANCA SIMPLES ECR</b>
@@ -206,7 +204,7 @@ module BoletoBancario
206
204
  # @return [String]
207
205
  #
208
206
  def agencia_codigo_cedente
209
- "#{agencia}-#{digito_agencia} / #{codigo_cedente}"
207
+ "#{agencia} / #{codigo_cedente}"
210
208
  end
211
209
 
212
210
  # Mostra o campo nosso número calculando o dígito verificador do nosso número.
@@ -260,7 +258,6 @@ module BoletoBancario
260
258
  #
261
259
  # Seguradoras (Se 7% informar 7. Limitado a 9%)
262
260
  # <b>Demais clientes usar 0 (zero)</b>
263
- # O padrão é zero.
264
261
  #
265
262
  # @return [String]
266
263
  #
@@ -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
@@ -0,0 +1,55 @@
1
+ pt-BR:
2
+ boleto_bancario:
3
+ labels:
4
+ cedente: "Cedente"
5
+ sacado: "Sacado"
6
+ nosso_numero: "Nosso Número"
7
+ numero_documento: "Número do Documento"
8
+ data_vencimento: "Data de Vencimento"
9
+ valor_documento: "Valor do Documento"
10
+ agencia_cedente: "Agência/Código Cedente"
11
+ especie: "Espécie"
12
+ especie_documento: "Espécie Doc."
13
+ aceite: "Aceite"
14
+ data_documento: "Data do Documento"
15
+ carteira: "Carteira"
16
+ instrucoes: "Instruções"
17
+ local_pagamento: "Local de Pagamento"
18
+ linha_digitavel: "Linha Digitável"
19
+ codigo_banco: "Código do Banco"
20
+ documento_cedente: "CPF/CNPJ Cedente"
21
+ documento_sacado: "CPF/CNPJ Sacado"
22
+ endereco_cedente: "Endereço Cedente"
23
+ endereco_sacado: "Endereço Sacado"
24
+ conta_corrente: "Conta Corrente"
25
+ agencia: "Agência"
26
+ codigo_cedente: "Código do Cedente"
27
+
28
+ errors:
29
+ messages:
30
+ carteira_invalida: "carteira inválida"
31
+ agencia_invalida: "agência inválida"
32
+ conta_corrente_invalida: "conta corrente inválida"
33
+ valor_documento_invalido: "valor do documento inválido"
34
+ numero_documento_invalido: "número do documento inválido"
35
+ codigo_cedente_invalido: "código do cedente inválido"
36
+ documento_invalido: "documento inválido (CPF/CNPJ)"
37
+ data_vencimento_invalida: "data de vencimento inválida"
38
+
39
+ banks:
40
+ banco_brasil: "Banco do Brasil"
41
+ bradesco: "Bradesco"
42
+ itau: "Itaú"
43
+ santander: "Santander"
44
+ caixa: "Caixa Econômica Federal"
45
+ banrisul: "Banrisul"
46
+ sicoob: "Sicoob"
47
+ sicredi: "Sicredi"
48
+ nubank: "Nubank"
49
+ inter: "Banco Inter"
50
+ c6_bank: "C6 Bank"
51
+
52
+ defaults:
53
+ local_pagamento: "PAGÁVEL EM QUALQUER BANCO ATÉ O VENCIMENTO"
54
+ especie_documento: "DM"
55
+ especie: "R$"