br_boleto 2.1.0 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -0
  3. data/Gemfile.lock +1 -1
  4. data/README.markdown +157 -8
  5. data/br_boleto.gemspec +1 -1
  6. data/lib/br_boleto.rb +12 -1
  7. data/lib/br_boleto/association/have_conta.rb +31 -27
  8. data/lib/br_boleto/boleto/banco_brasil.rb +130 -0
  9. data/lib/br_boleto/boleto/santander.rb +77 -0
  10. data/lib/br_boleto/conta/banco_brasil.rb +156 -0
  11. data/lib/br_boleto/conta/itau.rb +8 -3
  12. data/lib/br_boleto/conta/santander.rb +208 -0
  13. data/lib/br_boleto/remessa/cnab240/banco_brasil.rb +132 -0
  14. data/lib/br_boleto/remessa/cnab240/bradesco.rb +1 -3
  15. data/lib/br_boleto/remessa/cnab240/itau.rb +0 -6
  16. data/lib/br_boleto/remessa/cnab240/santander.rb +266 -0
  17. data/lib/br_boleto/remessa/cnab400/banco_brasil.rb +264 -0
  18. data/lib/br_boleto/remessa/cnab400/bradesco.rb +1 -1
  19. data/lib/br_boleto/remessa/cnab400/santander.rb +215 -0
  20. data/lib/br_boleto/retorno/cnab240/banco_brasil.rb +10 -0
  21. data/lib/br_boleto/retorno/cnab240/base.rb +3 -2
  22. data/lib/br_boleto/retorno/cnab240/caixa.rb +3 -2
  23. data/lib/br_boleto/retorno/cnab240/itau.rb +1 -2
  24. data/lib/br_boleto/retorno/cnab240/santander.rb +38 -0
  25. data/lib/br_boleto/retorno/cnab240/sicoob.rb +3 -2
  26. data/lib/br_boleto/retorno/cnab400/banco_brasil.rb +46 -0
  27. data/lib/br_boleto/retorno/cnab400/bradesco.rb +4 -3
  28. data/lib/br_boleto/retorno/cnab400/itau.rb +2 -2
  29. data/lib/br_boleto/retorno/cnab400/santander.rb +44 -0
  30. data/lib/br_boleto/retorno/cnab400/sicoob.rb +3 -2
  31. data/lib/br_boleto/retorno/cnab400/sicredi.rb +20 -6
  32. data/lib/br_boleto/retorno/pagamento.rb +28 -7
  33. data/lib/br_boleto/version.rb +1 -1
  34. data/test/br_boleto/boleto/banco_brasil_test.rb +183 -0
  35. data/test/br_boleto/boleto/santander_test.rb +122 -0
  36. data/test/br_boleto/conta/banco_brasil_test.rb +209 -0
  37. data/test/br_boleto/conta/santantader_test.rb +222 -0
  38. data/test/br_boleto/remessa/cnab240/banco_brasil_test.rb +187 -0
  39. data/test/br_boleto/remessa/cnab240/itau_test.rb +4 -0
  40. data/test/br_boleto/remessa/cnab240/santander_test.rb +144 -0
  41. data/test/br_boleto/remessa/cnab400/banco_brasil_test.rb +285 -0
  42. data/test/br_boleto/remessa/cnab400/bradesco_test.rb +7 -0
  43. data/test/br_boleto/remessa/cnab400/santander_test.rb +174 -0
  44. data/test/br_boleto/retorno/cnab240/banco_brasil_test.rb +271 -0
  45. data/test/br_boleto/retorno/cnab240/base_test.rb +20 -10
  46. data/test/br_boleto/retorno/cnab240/bradesco_test.rb +15 -15
  47. data/test/br_boleto/retorno/cnab240/caixa_test.rb +10 -10
  48. data/test/br_boleto/retorno/cnab240/cecred_test.rb +55 -138
  49. data/test/br_boleto/retorno/cnab240/itau_test.rb +15 -15
  50. data/test/br_boleto/retorno/cnab240/santander_test.rb +282 -0
  51. data/test/br_boleto/retorno/cnab240/sicoob_test.rb +25 -15
  52. data/test/br_boleto/retorno/cnab240/sicredi_test.rb +15 -15
  53. data/test/br_boleto/retorno/cnab240/unicred_test.rb +15 -15
  54. data/test/br_boleto/retorno/cnab400/banco_brasil_test.rb +7 -0
  55. data/test/br_boleto/retorno/cnab400/bradesco_test.rb +24 -12
  56. data/test/br_boleto/retorno/cnab400/itau_test.rb +6 -4
  57. data/test/br_boleto/retorno/cnab400/santander_test.rb +7 -0
  58. data/test/br_boleto/retorno/cnab400/sicoob_test.rb +20 -10
  59. data/test/br_boleto/retorno/cnab400/sicredi_test.rb +97 -1
  60. data/test/br_boleto/retorno/cnab400/unicred.rb +18 -18
  61. data/test/br_boleto/retorno/pagamento_test.rb +2 -2
  62. data/test/factories/boleto/boleto_banco_brasil.rb +18 -0
  63. data/test/factories/boleto/boleto_santander.rb +18 -0
  64. data/test/factories/conta/banco_brasil.rb +16 -0
  65. data/test/factories/conta/santander.rb +15 -0
  66. data/test/factories/remessa/cnab240/banco_brasil.rb +9 -0
  67. data/test/factories/remessa/cnab240/santander.rb +9 -0
  68. data/test/factories/remessa/cnab400/banco_brasil.rb +8 -0
  69. data/test/factories/remessa/cnab400/santander.rb +8 -0
  70. data/test/fixtures/retorno/cnab240/banco_brasil.ret +74 -0
  71. data/test/fixtures/retorno/cnab240/cecred.ret +10 -0
  72. data/test/fixtures/retorno/cnab240/santander.ret +16 -0
  73. data/test/fixtures/retorno/cnab400/sicredi.ret +4 -0
  74. metadata +64 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 020fd56f017584d8546fcf0cca4b7c5303fa9a3e
4
- data.tar.gz: 2c646b4f9b5e04dddd16a3887e35e0a0c01e4324
3
+ metadata.gz: 9e63b6bade6f42bb9fa2642ddd95632c7d9d0b57
4
+ data.tar.gz: 8624d1e332aad837ebb4d099fcc9e72211375f56
5
5
  SHA512:
6
- metadata.gz: 4c2d14b4e5d366fb891681d90d841cf91e2b03101da60faad9932b1b39ee5384d79cd79a125a96f5511f88ca845c25ff9e719bc4e950aef443fd5a6cd4e832e1
7
- data.tar.gz: e574dbdf4449c629f57248932a082199c03cc30bf4de4bd59452c86f08987fa9e5252574978c39405ecb07e7e4b6e3272d73b30c83eff364e8d5048e60a77e24
6
+ metadata.gz: 670443799e6482b64e9bd57426d0446f0efe503c3676714f43f1701742b68f963f4d039749cd2374a413ee073566d031a61648540a25febfb2d280cc03111aa0
7
+ data.tar.gz: 3ee9191d6629c296623abc1506e365122ca7052f07e58d60e09dc123285cd4bf6fbd604c2fa359b42c58fdd14190957aef7b8c5117dcc70e83f8326210018c53
@@ -1,3 +1,4 @@
1
1
  language: ruby
2
2
  rvm:
3
+ - 2.2.0
3
4
  - 2.3.0
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- br_boleto (2.1.0)
4
+ br_boleto (2.2.0)
5
5
  activemodel (~> 4.2)
6
6
  activesupport (~> 4.2)
7
7
  rake (>= 0.8.7)
@@ -9,14 +9,35 @@ Emissão de Boletos Bancários em Ruby.
9
9
  **O que essa gem faz?**
10
10
 
11
11
  1. Boleto bancário (apenas os cálculos para o boleto, sem a interface) para os bancos:
12
- - Sicoob
13
- - Caixa (em andamento)
12
+ - Banco do Brasil (em andamento)
13
+ - Bradesco (em andamento)
14
+ - Caixa
15
+ - Cecred
16
+ - Itaú (em andamento)
17
+ - Santander (em andamento)
18
+ - Sicoob
19
+ - Sicredi
20
+ - Unicred
14
21
  2. Arquivo de remessa para os Bancos:
15
- - Sicoob (CNAB 240 e CNAB400)
16
- - Caixa (CNAB 240)
22
+ - Banco do Brasil (CNAB240 e CNAB400)
23
+ - Bradesco (CNAB240 e CNAB400)
24
+ - Caixa (CNAB240)
25
+ - Cecred (CNAB240)
26
+ - Itaú (CNAB240 e CNAB400)
27
+ - Santander (CNAB240 e CNAB400)
28
+ - Sicoob (CNAB240 e CNAB400)
29
+ - Sicredi (CNAB240 e CNAB400)
30
+ - Unicred (CNAB240 e CNAB400)
17
31
  3. Arquivo de retorno para os Bancos:
18
- - Sicoob (CNAB 240 e CNAB400)
19
- - Caixa (CNAB 240)
32
+ - Banco do Brasil (CNAB240 e CNAB400)
33
+ - Bradesco (CNAB240 e CNAB400)
34
+ - Caixa (CNAB240)
35
+ - Cecred (CNAB240)
36
+ - Itaú (CNAB240 e CNAB400)
37
+ - Santander (CNAB240 e CNAB400)
38
+ - Sicoob (CNAB240 e CNAB400)
39
+ - Sicredi (CNAB240 e CNAB400)
40
+ - Unicred (CNAB240 e CNAB400)
20
41
 
21
42
 
22
43
 
@@ -33,7 +54,15 @@ Emissão de Boletos Bancários em Ruby.
33
54
 
34
55
  Seguimos as documentações descritas abaixo:
35
56
 
57
+ * [Banco do Brasil](documentacoes_boletos/Banco do Brasil)
58
+ * [Bradesco](documentacoes_boletos/Bradesco)
59
+ * [Caixa](documentacoes_boletos/Caixa)
60
+ * [Cecred](documentacoes_boletos/cecred)
61
+ * [Itaú](documentacoes_boletos/Itaú)
62
+ * [Santander](documentacoes_boletos/Santander)
36
63
  * [Sicoob](documentacoes_boletos/Sicoob)
64
+ * [Sicredi](documentacoes_boletos/Sicredi)
65
+ * [Unicred](documentacoes_boletos/Unicred)
37
66
 
38
67
 
39
68
  ## Bancos Suportados
@@ -57,8 +86,50 @@ Para todos os bancos e carteiras implementadas, **seguimos as documentações**
57
86
  <tr>
58
87
  <td>Caixa</td>
59
88
  <td>1, 2.</td>
89
+ <td>Homologado dia 11/11/2016</td>
90
+ <td>Bruno M. Mergen</td>
91
+ </tr>
92
+ <tr>
93
+ <td>Cecred</td>
94
+ <td>1.</td>
95
+ <td>Homologado dia 07/11/2016</td>
96
+ <td>Ricardo Zanuzzo</td>
97
+ </tr>
98
+ <tr>
99
+ <td>Unicred</td>
100
+ <td>09.</td>
101
+ <td>Homologado dia 11/11/2016</td>
102
+ <td>Ricardo Zanuzzo</td>
103
+ </tr>
104
+ <tr>
105
+ <td>Sicredi</td>
106
+ <td>1, 3.</td>
107
+ <td>Homologado dia 17/11/2016</td>
108
+ <td>Ricardo Zanuzzo</td>
109
+ </tr>
110
+ <tr>
111
+ <td>Banco do Brasil</td>
112
+ <td>11, 12, 15, 16, 17, 18, 31, 51.</td>
113
+ <td>Pendente</td>
114
+ <td>Ricardo Zanuzzo</td>
115
+ </tr>
116
+ <tr>
117
+ <td>Bradesco</td>
118
+ <td>06, 09, 19, 21, 22.</td>
119
+ <td>Pendente</td>
120
+ <td>Ricardo Zanuzzo</td>
121
+ </tr>
122
+ <tr>
123
+ <td>Itaú</td>
124
+ <td>104, 105, 107, 108, 109, 112, 113, 116, 117, 119, 121, 122, 126, 131, 134, 135, 136, 142, 143, 146, 147, 150, 168, 169, 174, 175, 180, 191, 196, 198.</td>
125
+ <td>Pendente</td>
126
+ <td>Ricardo Zanuzzo</td>
127
+ </tr>
128
+ <tr>
129
+ <td>Santander</td>
130
+ <td>101, 102, 121.</td>
60
131
  <td>Pendente</td>
61
- <td></td>
132
+ <td>Ricardo Zanuzzo</td>
62
133
  </tr>
63
134
  </table>
64
135
 
@@ -89,8 +160,86 @@ Para todos os bancos e carteiras implementadas, **seguimos as documentações**
89
160
  <tr>
90
161
  <td>Caixa</td>
91
162
  <td>240</td>
163
+ <td>Homologado dia 11/11/2016</td>
164
+ <td>Bruno M. Merge</td>
165
+ </tr>
166
+ <tr>
167
+ <td>Cecred</td>
168
+ <td>240</td>
169
+ <td>Homologado dia 07/11/2016</td>
170
+ <td>Ricardo Zanuzzo</td>
171
+ </tr>
172
+ <tr>
173
+ <td>Unicred</td>
174
+ <td>240</td>
175
+ <td>Homologado dia 11/11/2016</td>
176
+ <td>Ricardo Zanuzzo</td>
177
+ </tr>
178
+ <tr>
179
+ <td>Unicred</td>
180
+ <td>400</td>
181
+ <td>Pendente</td>
182
+ <td>Ricardo Zanuzzo</td>
183
+ </tr>
184
+ <tr>
185
+ <td>Sicredi</td>
186
+ <td>240</td>
187
+ <td>Homologado dia 17/11/2016</td>
188
+ <td>Ricardo Zanuzzo</td>
189
+ </tr>
190
+ <tr>
191
+ <td>Sicredi</td>
192
+ <td>400</td>
193
+ <td>Pendente</td>
194
+ <td>Ricardo Zanuzzo</td>
195
+ </tr>
196
+ <tr>
197
+ <td>Banco do Brasil</td>
198
+ <td>240</td>
199
+ <td>Pendente</td>
200
+ <td>Ricardo Zanuzzo</td>
201
+ </tr>
202
+ <tr>
203
+ <td>Banco do Brasil</td>
204
+ <td>400</td>
205
+ <td>Pendente</td>
206
+ <td>Ricardo Zanuzzo</td>
207
+ </tr>
208
+ <tr>
209
+ <td>Bradesco</td>
210
+ <td>240</td>
211
+ <td>Pendente</td>
212
+ <td>Ricardo Zanuzzo</td>
213
+ </tr>
214
+ <tr>
215
+ <td>Bradesco</td>
216
+ <td>400</td>
217
+ <td>Pendente</td>
218
+ <td>Ricardo Zanuzzo</td>
219
+ </tr>
220
+ <tr>
221
+ <td>Itaú</td>
222
+ <td>240</td>
223
+ <td>Pendente</td>
224
+ <td>Ricardo Zanuzzo</td>
225
+ </tr>
226
+ <tr>
227
+ <td>Itaú</td>
228
+ <td>400</td>
229
+ <td>Pendente</td>
230
+ <td>Ricardo Zanuzzo</td>
231
+ </tr>
232
+ <tr>
233
+ <td>Santander</td>
234
+ <td>240</td>
235
+ <td>Pendente</td>
236
+ <td>Ricardo Zanuzzo</td>
237
+ </tr>
238
+ <tr>
239
+ <td>Santander</td>
240
+ <td>400</td>
92
241
  <td>Pendente</td>
93
- <td></td>
242
+ <td>Ricardo Zanuzzo</td>
94
243
  </tr>
95
244
  </table>
96
245
 
@@ -19,7 +19,7 @@ Gem::Specification.new do |gem|
19
19
  # gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
20
20
  gem.require_paths = ["lib"]
21
21
 
22
- gem.required_ruby_version = ['~> 2.2', '~> 2.3']
22
+ gem.required_ruby_version = '>= 2.2.0'
23
23
 
24
24
 
25
25
  gem.add_dependency "rake", '>= 0.8.7'
@@ -77,6 +77,8 @@ module BrBoleto
77
77
  autoload :Sicredi
78
78
  autoload :Cecred
79
79
  autoload :Itau
80
+ autoload :BancoBrasil
81
+ autoload :Santander
80
82
  end
81
83
 
82
84
  module Boleto
@@ -90,6 +92,8 @@ module BrBoleto
90
92
  autoload :Sicredi
91
93
  autoload :Cecred
92
94
  autoload :Itau
95
+ autoload :BancoBrasil
96
+ autoload :Santander
93
97
  end
94
98
 
95
99
 
@@ -109,6 +113,8 @@ module BrBoleto
109
113
  autoload :Sicredi
110
114
  autoload :Cecred
111
115
  autoload :Itau
116
+ autoload :BancoBrasil
117
+ autoload :Santander
112
118
  end
113
119
  module Cnab400
114
120
  extend ActiveSupport::Autoload
@@ -118,6 +124,8 @@ module BrBoleto
118
124
  autoload :Unicred
119
125
  autoload :Sicredi
120
126
  autoload :Itau
127
+ autoload :BancoBrasil
128
+ autoload :Santander
121
129
  end
122
130
  end
123
131
 
@@ -135,6 +143,8 @@ module BrBoleto
135
143
  autoload :Sicredi
136
144
  autoload :Cecred
137
145
  autoload :Itau
146
+ autoload :BancoBrasil
147
+ autoload :Santander
138
148
  end
139
149
  module Cnab400
140
150
  extend ActiveSupport::Autoload
@@ -144,11 +154,12 @@ module BrBoleto
144
154
  autoload :Unicred
145
155
  autoload :Sicredi
146
156
  autoload :Itau
157
+ autoload :BancoBrasil
158
+ autoload :Santander
147
159
  end
148
160
  end
149
161
 
150
162
 
151
-
152
163
  # Módulo que possui classes que realizam os cálculos dos campos que serão mostrados nos boletos.
153
164
  #
154
165
  module Calculos
@@ -33,32 +33,34 @@ module BrBoleto
33
33
 
34
34
  ####################### VALIDAÇÔES DA CONTA #######################
35
35
  # Devem ser sobrescrita a cada classe que utilizar, pois pode variar
36
- def valid_conta_corrente_length; end
37
- def valid_conta_corrente_minimum; end
38
- def valid_conta_corrente_maximum; end
39
- def valid_conta_corrente_required; end
40
- def valid_modalidade_length; end
41
- def valid_modalidade_minimum; end
42
- def valid_modalidade_maximum; end
43
- def valid_modalidade_required; end
44
- def valid_codigo_cedente_length; end
45
- def valid_codigo_cedente_minimum; end
46
- def valid_codigo_cedente_maximum; end
47
- def valid_codigo_cedente_required; end
48
- def valid_codigo_cedente_inclusion; end
49
- def valid_endereco_required; end
50
- def valid_carteira_length; end
51
- def valid_carteira_minimum; end
52
- def valid_carteira_maximum; end
53
- def valid_carteira_required; end
54
- def valid_convenio_length; end
55
- def valid_convenio_minimum; end
56
- def valid_convenio_maximum; end
57
- def valid_convenio_required; end
58
- def valid_modalidade_inclusion; end
59
- def valid_carteira_inclusion; end
60
- def valid_convenio_inclusion; end
61
- def valid_versao_aplicativo_required; end # Banco da Caixa
36
+ def valid_conta_corrente_length; end
37
+ def valid_conta_corrente_minimum; end
38
+ def valid_conta_corrente_maximum; end
39
+ def valid_conta_corrente_required; end
40
+ def valid_modalidade_length; end
41
+ def valid_modalidade_minimum; end
42
+ def valid_modalidade_maximum; end
43
+ def valid_modalidade_required; end
44
+ def valid_codigo_cedente_length; end
45
+ def valid_codigo_cedente_minimum; end
46
+ def valid_codigo_cedente_maximum; end
47
+ def valid_codigo_cedente_required; end
48
+ def valid_codigo_cedente_inclusion; end
49
+ def valid_endereco_required; end
50
+ def valid_carteira_length; end
51
+ def valid_carteira_minimum; end
52
+ def valid_carteira_maximum; end
53
+ def valid_carteira_required; end
54
+ def valid_convenio_length; end
55
+ def valid_convenio_minimum; end
56
+ def valid_convenio_maximum; end
57
+ def valid_convenio_required; end
58
+ def valid_modalidade_inclusion; end
59
+ def valid_carteira_inclusion; end
60
+ def valid_convenio_inclusion; end
61
+ def valid_versao_aplicativo_required; end # Banco da Caixa
62
+ def valid_variacao_carteira_required; end # Banco do Brasil
63
+ def valid_codigo_transmissao_required; end # Banco Santander
62
64
 
63
65
 
64
66
  def set_regras_tamanho_e_validations!
@@ -95,7 +97,9 @@ module BrBoleto
95
97
  @conta.valid_convenio_required = valid_convenio_required if "#{valid_convenio_required}".present?
96
98
  @conta.valid_convenio_inclusion = valid_convenio_inclusion if "#{valid_convenio_inclusion}".present?
97
99
 
98
- @conta.valid_versao_aplicativo_required = valid_versao_aplicativo_required if "#{valid_versao_aplicativo_required}".present?
100
+ @conta.valid_versao_aplicativo_required = valid_versao_aplicativo_required if "#{valid_versao_aplicativo_required}".present?
101
+ @conta.valid_variacao_carteira_required = valid_variacao_carteira_required if "#{valid_variacao_carteira_required}".present?
102
+ @conta.valid_codigo_transmissao_required = valid_codigo_transmissao_required if "#{valid_codigo_transmissao_required}".present?
99
103
 
100
104
  end
101
105
 
@@ -0,0 +1,130 @@
1
+ # encoding: utf-8
2
+ module BrBoleto
3
+ module Boleto
4
+ # Implementação de emissão de boleto bancário pelo Banco BancoBrasil.
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/bradesco' dentro dessa biblioteca.
10
+ class BancoBrasil < Base
11
+ def conta_class
12
+ BrBoleto::Conta::BancoBrasil
13
+ end
14
+
15
+ ################# VALIDAÇÕES DINÂMICAS #################
16
+ def valid_numero_documento_maximum
17
+ numero_documento_esperado[conta.convenio.to_s.size]
18
+ end
19
+
20
+ def valid_carteira_inclusion
21
+ %w[11 12 15 16 17 18 31 51]
22
+ end
23
+
24
+ # Tamanho máximo de uma conta corrente no Banco BancoBrasil
25
+ def valid_conta_corrente_maximum
26
+ 8
27
+ end
28
+
29
+ # Tamanho máximo para o codigo_cedente/Convênio
30
+ # def valid_convenio_maximum
31
+ # 8
32
+ # end
33
+
34
+ # codigo_cedente/Convênio deve ser obrigatório
35
+ def valid_convenio_required
36
+ true
37
+ end
38
+ ##########################################################
39
+
40
+ # === Código do Convênio VS. Número do Documento
41
+ #
42
+ # No caso do Banco do Brasil, o tamanho do código do cedente ditará o tamanho do número do documento.
43
+ # Ou seja, quando o código do cedente for X, o tamanho do número do documento deverá ser Y.
44
+ # Segue abaixo:
45
+ # ______________________________________________________________
46
+ # | Tamanho do Código Cedente | Tamanho do Número do documento |
47
+ # |----------------------------|--------------------------------|
48
+ # | 04 | 07 |
49
+ # | 06 | 05 |
50
+ # | 07 | 10 |
51
+ # | 08 | 09 |
52
+ # ---------------------------------------------------------------
53
+ #
54
+ def numero_documento_esperado
55
+ { 0 => 0, 4 => 7, 6 => 5, 7 => 10, 8 => 9 }
56
+ end
57
+
58
+
59
+ # Conforme descrito na documentação, o valor que deve constar em local do pagamento é
60
+ # "Pagável em qualquer banco até o vencimento. Após, atualize o boleto no site bb.com.br"
61
+ def default_values
62
+ super.merge({
63
+ :local_pagamento => 'Pagável em qualquer banco até o vencimento. Após, atualize o boleto no site bb.com.br'
64
+ })
65
+ end
66
+
67
+ # Nosso Número descrito na documentação (Pag. 18 a 22):
68
+ #
69
+ # ==== Código do Convênio (4 dígitos) Número do Documento (7 dígitos) - Nosso número DV
70
+ # Exemplo: 44447777777-D
71
+ #
72
+ # ==== Código do Convênio (6 dígitos) Número do Documento (5 dígitos) - Nosso número DV
73
+ # Exemplo: 66666655555-D
74
+ #
75
+ # ==== Código do Convênio (7 dígitos) Número do Documento (10 digitos)
76
+ # Exemplo: 77777771010101010
77
+ #
78
+ # ==== Código do Convênio (8 dígitos) Número do Documento (9 dígitos)
79
+ # Exemplo: 88888888999999999
80
+ #
81
+ def nosso_numero
82
+ tamanho = conta.convenio.to_s.size
83
+ if tamanho == 7 or tamanho == 8
84
+ "#{conta.convenio}#{numero_documento}"
85
+ else
86
+ "#{conta.convenio}#{numero_documento}-#{digito_verificador_nosso_numero}"
87
+ end
88
+ end
89
+
90
+ # Para o cálculo do dígito, será necessário acrescentar o código do convenio
91
+ # antes do Nosso Número (número do documento), e aplicar o módulo 11, com fatores de 2 a 7.
92
+ # @return [String] Retorno do cálculo do módulo 11 na base 7 (2,3,4,5,6,7)
93
+ def digito_verificador_nosso_numero
94
+ BrBoleto::Calculos::Modulo11FatorDe9a2RestoX.new("#{conta.convenio}#{numero_documento}")
95
+ end
96
+
97
+ # === Código de barras do banco com Convênio de 4 e 6 dígitos
98
+ # ___________________________________________________________________________
99
+ # | Posição | Tamanho | Descrição |
100
+ # |-----------------|---------------|-----------------------------------------|
101
+ # | 20-30 | 11 | Nosso-Número, sem dígito verificador |
102
+ # | 20-23 ou 20-25 | 4 ou 6 | Código do cedente fornecido pelo Banco |
103
+ # | 24-30 ou 26-30 | 7 ou 5 | Nosso-Número, sem dígito verificador |
104
+ # | 31-34 | 04 | Agência (sem o dígito) |
105
+ # | 35-42 | 08 | Conta corrente (sem o dígito) |
106
+ # | 43-44 | 02 | Carteira |
107
+ # -----------------------------------------------------------------------------
108
+ #
109
+ # === Código de barras do banco com Convênio de 7 e 8 dígitos
110
+ # ___________________________________________________________________________
111
+ # | Posição | Tamanho | Descrição |
112
+ # |-----------------|---------------|-----------------------------------------|
113
+ # | 20-30 | 17 | Nosso-Número, sem dígito verificador |
114
+ # | 20-32 ou 20-33 | 7 ou 8 | Código do cedente fornecido pelo Banco |
115
+ # | 33-42 ou 34-42 | 9 ou 10 | Nosso-Número, sem dígito verificador |
116
+ # | 43-44 | 02 | Carteira |
117
+ # ----------------------------------------------------------------------------
118
+ #
119
+ def codigo_de_barras_do_banco
120
+ tamanho = conta.convenio.to_s.size
121
+ if tamanho == 7 or tamanho == 8
122
+ "000000#{conta.convenio}#{numero_documento}#{conta.carteira}"
123
+ else
124
+ "#{conta.convenio}#{numero_documento}#{conta.agencia}#{conta.conta_corrente}#{conta.carteira}"
125
+ end
126
+ end
127
+
128
+ end
129
+ end
130
+ end