br_boleto 2.1.0 → 2.2.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.
- checksums.yaml +4 -4
- data/.travis.yml +1 -0
- data/Gemfile.lock +1 -1
- data/README.markdown +157 -8
- data/br_boleto.gemspec +1 -1
- data/lib/br_boleto.rb +12 -1
- data/lib/br_boleto/association/have_conta.rb +31 -27
- data/lib/br_boleto/boleto/banco_brasil.rb +130 -0
- data/lib/br_boleto/boleto/santander.rb +77 -0
- data/lib/br_boleto/conta/banco_brasil.rb +156 -0
- data/lib/br_boleto/conta/itau.rb +8 -3
- data/lib/br_boleto/conta/santander.rb +208 -0
- data/lib/br_boleto/remessa/cnab240/banco_brasil.rb +132 -0
- data/lib/br_boleto/remessa/cnab240/bradesco.rb +1 -3
- data/lib/br_boleto/remessa/cnab240/itau.rb +0 -6
- data/lib/br_boleto/remessa/cnab240/santander.rb +266 -0
- data/lib/br_boleto/remessa/cnab400/banco_brasil.rb +264 -0
- data/lib/br_boleto/remessa/cnab400/bradesco.rb +1 -1
- data/lib/br_boleto/remessa/cnab400/santander.rb +215 -0
- data/lib/br_boleto/retorno/cnab240/banco_brasil.rb +10 -0
- data/lib/br_boleto/retorno/cnab240/base.rb +3 -2
- data/lib/br_boleto/retorno/cnab240/caixa.rb +3 -2
- data/lib/br_boleto/retorno/cnab240/itau.rb +1 -2
- data/lib/br_boleto/retorno/cnab240/santander.rb +38 -0
- data/lib/br_boleto/retorno/cnab240/sicoob.rb +3 -2
- data/lib/br_boleto/retorno/cnab400/banco_brasil.rb +46 -0
- data/lib/br_boleto/retorno/cnab400/bradesco.rb +4 -3
- data/lib/br_boleto/retorno/cnab400/itau.rb +2 -2
- data/lib/br_boleto/retorno/cnab400/santander.rb +44 -0
- data/lib/br_boleto/retorno/cnab400/sicoob.rb +3 -2
- data/lib/br_boleto/retorno/cnab400/sicredi.rb +20 -6
- data/lib/br_boleto/retorno/pagamento.rb +28 -7
- data/lib/br_boleto/version.rb +1 -1
- data/test/br_boleto/boleto/banco_brasil_test.rb +183 -0
- data/test/br_boleto/boleto/santander_test.rb +122 -0
- data/test/br_boleto/conta/banco_brasil_test.rb +209 -0
- data/test/br_boleto/conta/santantader_test.rb +222 -0
- data/test/br_boleto/remessa/cnab240/banco_brasil_test.rb +187 -0
- data/test/br_boleto/remessa/cnab240/itau_test.rb +4 -0
- data/test/br_boleto/remessa/cnab240/santander_test.rb +144 -0
- data/test/br_boleto/remessa/cnab400/banco_brasil_test.rb +285 -0
- data/test/br_boleto/remessa/cnab400/bradesco_test.rb +7 -0
- data/test/br_boleto/remessa/cnab400/santander_test.rb +174 -0
- data/test/br_boleto/retorno/cnab240/banco_brasil_test.rb +271 -0
- data/test/br_boleto/retorno/cnab240/base_test.rb +20 -10
- data/test/br_boleto/retorno/cnab240/bradesco_test.rb +15 -15
- data/test/br_boleto/retorno/cnab240/caixa_test.rb +10 -10
- data/test/br_boleto/retorno/cnab240/cecred_test.rb +55 -138
- data/test/br_boleto/retorno/cnab240/itau_test.rb +15 -15
- data/test/br_boleto/retorno/cnab240/santander_test.rb +282 -0
- data/test/br_boleto/retorno/cnab240/sicoob_test.rb +25 -15
- data/test/br_boleto/retorno/cnab240/sicredi_test.rb +15 -15
- data/test/br_boleto/retorno/cnab240/unicred_test.rb +15 -15
- data/test/br_boleto/retorno/cnab400/banco_brasil_test.rb +7 -0
- data/test/br_boleto/retorno/cnab400/bradesco_test.rb +24 -12
- data/test/br_boleto/retorno/cnab400/itau_test.rb +6 -4
- data/test/br_boleto/retorno/cnab400/santander_test.rb +7 -0
- data/test/br_boleto/retorno/cnab400/sicoob_test.rb +20 -10
- data/test/br_boleto/retorno/cnab400/sicredi_test.rb +97 -1
- data/test/br_boleto/retorno/cnab400/unicred.rb +18 -18
- data/test/br_boleto/retorno/pagamento_test.rb +2 -2
- data/test/factories/boleto/boleto_banco_brasil.rb +18 -0
- data/test/factories/boleto/boleto_santander.rb +18 -0
- data/test/factories/conta/banco_brasil.rb +16 -0
- data/test/factories/conta/santander.rb +15 -0
- data/test/factories/remessa/cnab240/banco_brasil.rb +9 -0
- data/test/factories/remessa/cnab240/santander.rb +9 -0
- data/test/factories/remessa/cnab400/banco_brasil.rb +8 -0
- data/test/factories/remessa/cnab400/santander.rb +8 -0
- data/test/fixtures/retorno/cnab240/banco_brasil.ret +74 -0
- data/test/fixtures/retorno/cnab240/cecred.ret +10 -0
- data/test/fixtures/retorno/cnab240/santander.ret +16 -0
- data/test/fixtures/retorno/cnab400/sicredi.ret +4 -0
- metadata +64 -7
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9e63b6bade6f42bb9fa2642ddd95632c7d9d0b57
|
|
4
|
+
data.tar.gz: 8624d1e332aad837ebb4d099fcc9e72211375f56
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 670443799e6482b64e9bd57426d0446f0efe503c3676714f43f1701742b68f963f4d039749cd2374a413ee073566d031a61648540a25febfb2d280cc03111aa0
|
|
7
|
+
data.tar.gz: 3ee9191d6629c296623abc1506e365122ca7052f07e58d60e09dc123285cd4bf6fbd604c2fa359b42c58fdd14190957aef7b8c5117dcc70e83f8326210018c53
|
data/.travis.yml
CHANGED
data/Gemfile.lock
CHANGED
data/README.markdown
CHANGED
|
@@ -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
|
-
-
|
|
13
|
-
-
|
|
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
|
-
-
|
|
16
|
-
-
|
|
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
|
-
-
|
|
19
|
-
-
|
|
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
|
|
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
|
|
242
|
+
<td>Ricardo Zanuzzo</td>
|
|
94
243
|
</tr>
|
|
95
244
|
</table>
|
|
96
245
|
|
data/br_boleto.gemspec
CHANGED
|
@@ -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 =
|
|
22
|
+
gem.required_ruby_version = '>= 2.2.0'
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
gem.add_dependency "rake", '>= 0.8.7'
|
data/lib/br_boleto.rb
CHANGED
|
@@ -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;
|
|
37
|
-
def valid_conta_corrente_minimum;
|
|
38
|
-
def valid_conta_corrente_maximum;
|
|
39
|
-
def valid_conta_corrente_required;
|
|
40
|
-
def valid_modalidade_length;
|
|
41
|
-
def valid_modalidade_minimum;
|
|
42
|
-
def valid_modalidade_maximum;
|
|
43
|
-
def valid_modalidade_required;
|
|
44
|
-
def valid_codigo_cedente_length;
|
|
45
|
-
def valid_codigo_cedente_minimum;
|
|
46
|
-
def valid_codigo_cedente_maximum;
|
|
47
|
-
def valid_codigo_cedente_required;
|
|
48
|
-
def valid_codigo_cedente_inclusion;
|
|
49
|
-
def valid_endereco_required;
|
|
50
|
-
def valid_carteira_length;
|
|
51
|
-
def valid_carteira_minimum;
|
|
52
|
-
def valid_carteira_maximum;
|
|
53
|
-
def valid_carteira_required;
|
|
54
|
-
def valid_convenio_length;
|
|
55
|
-
def valid_convenio_minimum;
|
|
56
|
-
def valid_convenio_maximum;
|
|
57
|
-
def valid_convenio_required;
|
|
58
|
-
def valid_modalidade_inclusion;
|
|
59
|
-
def valid_carteira_inclusion;
|
|
60
|
-
def valid_convenio_inclusion;
|
|
61
|
-
def valid_versao_aplicativo_required;
|
|
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
|
|
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
|