boleto_bancario 0.0.1.beta → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: cd0a9ec52328f6ce59edd1d4105e868345dcb0fc
|
4
|
+
data.tar.gz: 7b290c3183af8c16461d56604152d4f3a7e1d1df
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: a9a9fd7deda2d72950c4339e600ec28d787efd4d94da0c1883162f78db6745cd456bd09ea21d3a558fc2896a5bdd925be70a18134374d41dee4b777d3a6e18ab
|
7
|
+
data.tar.gz: dd9f31fad47809390594a97dd34af31da5495b0623e083139bbbe05ad0a8c4808a220fa94d3a9abbae941f136fe813c08a8f79784c36a2b918f7b4444d2bfa7f
|
data/.gitignore
CHANGED
data/.travis.yml
ADDED
data/Changelog.markdown
CHANGED
data/Gemfile
CHANGED
data/Planning.markdown
CHANGED
@@ -2,104 +2,26 @@
|
|
2
2
|
|
3
3
|
Emissão de Boletos Bancários em Ruby. Simples, fácil e principalmente, flexível.
|
4
4
|
|
5
|
-
## Alternativas
|
6
|
-
|
7
|
-
Essa biblioteca é baseada em outras **ótimas** bibliotecas (**Recomendo analisar muito bem cada solução e usar a que resolver o seu problema!**):
|
8
|
-
|
9
|
-
* Stella Caelum [http://stella.caelum.com.br/](http://stella.caelum.com.br/)
|
10
|
-
* Novo Gateway de Pagamentos da Locaweb [http://www.locaweb.com.br/produtos/gateway-pagamento.html](http://www.locaweb.com.br/produtos/gateway-pagamento.html)
|
11
|
-
* Brcobranca [https://github.com/kivanio/brcobranca](https://github.com/kivanio/brcobranca)
|
12
|
-
* Boleto Php [http://boletophp.com.br/](http://boletophp.com.br/)
|
13
|
-
* Gem de Boleto Bancário (essa gem) [https://github.com/tomas-stefano/boleto_bancario](https://github.com/tomas-stefano/boleto_bancario)
|
14
|
-
|
15
|
-
## Instalação
|
16
|
-
|
17
|
-
gem install boleto_bancario
|
18
|
-
|
19
|
-
## Bancos Suportados
|
20
|
-
|
21
|
-
* TODO: Precisa escrever essa parte
|
22
|
-
|
23
|
-
## Usage
|
24
|
-
|
25
|
-
Você pode usar as próprias classes da gem, porém, **recomendo criar uma subclasse** para os bancos que você gostaria de desenvolver.
|
26
|
-
|
27
|
-
Exemplo:
|
28
|
-
|
29
|
-
```ruby
|
30
|
-
class Itau < BoletoBancario::Itau
|
31
|
-
end
|
32
|
-
|
33
|
-
class Santander < BoletoBancario::Santander
|
34
|
-
end
|
35
|
-
|
36
|
-
class Bradesco < BoletoBancario::Bradesco
|
37
|
-
end
|
38
|
-
|
39
|
-
class BancoBrasil < BoletoBancario::BancoBrasil
|
40
|
-
end
|
41
|
-
```
|
42
|
-
|
43
|
-
## Attributos
|
44
|
-
|
45
|
-
* TODO: Precisa escrever essa parte
|
46
|
-
|
47
|
-
## Internacionalização (i18n)
|
48
|
-
|
49
|
-
* TODO: Precisa escrever essa parte
|
50
|
-
|
51
|
-
## Validações
|
52
|
-
|
53
|
-
* TODO: Precisa escrever essa parte
|
54
|
-
|
55
|
-
## Código do Banco
|
56
|
-
|
57
|
-
* TODO: Precisa escrever essa parte
|
58
|
-
|
59
|
-
## Agência / Código do Cedente
|
60
|
-
|
61
|
-
* TODO: Precisa escrever essa parte
|
62
|
-
|
63
|
-
## Nosso Número
|
64
|
-
|
65
|
-
* TODO: Precisa escrever essa parte
|
66
|
-
|
67
|
-
## Código de Barras
|
68
|
-
|
69
|
-
* TODO: Precisa escrever essa parte
|
70
|
-
|
71
|
-
## Linha digitável
|
72
|
-
|
73
|
-
* TODO: Precisa escrever essa parte
|
74
|
-
|
75
|
-
## Documentação
|
76
|
-
|
77
|
-
* TODO: Precisa escrever essa parte
|
78
|
-
|
79
5
|
## Formatos
|
80
6
|
|
81
7
|
* TODO: Essa parte ainda pode mudar até a versão 0.0.1.
|
82
8
|
|
83
|
-
|
84
|
-
|
85
|
-
gem install boleto_bancario_html
|
86
|
-
|
87
|
-
E colocar na classe:
|
9
|
+
Colocar na classe:
|
88
10
|
|
89
11
|
```ruby
|
90
|
-
class
|
91
|
-
|
92
|
-
BoletoBancario::HTML5
|
93
|
-
end
|
12
|
+
class BoletoItau < BoletoBancario::Itau
|
13
|
+
respond_to :html, :pdf, :png
|
94
14
|
end
|
95
15
|
```
|
96
16
|
|
97
17
|
Para renderizar o html:
|
98
18
|
|
99
19
|
```ruby
|
100
|
-
itau =
|
20
|
+
itau = BoletoItau.new
|
21
|
+
|
22
|
+
itau.respond_with # Irá chamar o método render da instância do objeto passado no método format.
|
101
23
|
|
102
|
-
itau.
|
24
|
+
itau.respond_with(:pdf)
|
103
25
|
```
|
104
26
|
|
105
27
|
### Criando um novo Formato
|
@@ -108,12 +30,22 @@ Em relação a parte de formatos a gem de boleto bancário é extremamente flex
|
|
108
30
|
|
109
31
|
Basta criar um objeto que responda ao método **render**:
|
110
32
|
|
33
|
+
```ruby
|
34
|
+
module BoletoBancario
|
35
|
+
module Formato
|
36
|
+
class Html < Boleto
|
37
|
+
def render(*args)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
```
|
43
|
+
|
111
44
|
```ruby
|
112
45
|
module BoletoBancario
|
113
46
|
module Formato
|
114
47
|
class Pdf < Boleto
|
115
48
|
def render(*args)
|
116
|
-
# ...
|
117
49
|
end
|
118
50
|
end
|
119
51
|
end
|
data/README.markdown
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
#
|
1
|
+
# Boleto Bancario
|
2
2
|
|
3
3
|
Emissão de Boletos Bancários em Ruby.
|
4
4
|
|
@@ -25,14 +25,20 @@ Essa biblioteca é baseada em outras **ótimas** bibliotecas.
|
|
25
25
|
|
26
26
|
## Documentação
|
27
27
|
|
28
|
-
Seguimos todas as documentações
|
28
|
+
Seguimos todas as documentações descritas abaixo:
|
29
29
|
|
30
|
-
* [
|
31
|
-
* [
|
32
|
-
* [
|
33
|
-
* [
|
30
|
+
* [Banco do Brasil](documentacoes_dos_boletos/banco_brasil)
|
31
|
+
* [Banrisul](documentacoes_dos_boletos/banrisul)
|
32
|
+
* [Bradesco](documentacoes_dos_boletos/Bradesco)
|
33
|
+
* [Caixa](documentacoes_dos_boletos/Caixa)
|
34
|
+
* [HSBC](documentacoes_dos_boletos/HASBC)
|
35
|
+
* [Itaú](documentacoes_dos_boletos/Itau)
|
36
|
+
* [Real](documentacoes_dos_boletos/Real)
|
37
|
+
* [Santander](documentacoes_dos_boletos/santander)
|
38
|
+
* [Sicoob](documentacoes_dos_boletos/Sicoob)
|
39
|
+
* [Sicredi](documentacoes_dos_boletos/Sicredi)
|
34
40
|
|
35
|
-
Se você tiver uma documentação do boleto, **mais atualizada**,
|
41
|
+
Se você tiver uma documentação do boleto, **mais atualizada**, gostaria de pedir que você me enviasse. :)
|
36
42
|
|
37
43
|
## Bancos Suportados
|
38
44
|
|
@@ -56,8 +62,8 @@ Para todos os bancos e carteiras implementadas, **seguimos as documentações**
|
|
56
62
|
<td>Esperando Contribuição</td>
|
57
63
|
</tr>
|
58
64
|
<tr>
|
59
|
-
<td>
|
60
|
-
<td>
|
65
|
+
<td>Banrisul</td>
|
66
|
+
<td>00, 08.</td>
|
61
67
|
<td>Esperando Contribuição</td>
|
62
68
|
</tr>
|
63
69
|
<tr>
|
@@ -65,11 +71,41 @@ Para todos os bancos e carteiras implementadas, **seguimos as documentações**
|
|
65
71
|
<td>03, 06, 09, 19, 21, 22.</td>
|
66
72
|
<td>Esperando Contribuição</td>
|
67
73
|
</tr>
|
74
|
+
<tr>
|
75
|
+
<td>Caixa</td>
|
76
|
+
<td>14, 24.</td>
|
77
|
+
<td>Esperando Contribuição</td>
|
78
|
+
</tr>
|
79
|
+
<tr>
|
80
|
+
<td>HSBC</td>
|
81
|
+
<td>CNR.</td>
|
82
|
+
<td>Esperando Contribuição</td>
|
83
|
+
</tr>
|
84
|
+
<tr>
|
85
|
+
<td>Itaú</td>
|
86
|
+
<td>107, 109, 122, 142, 143, 126, 174, 175, 196, 198, 131, 146, 150, 168.</td>
|
87
|
+
<td>Esperando Contribuição</td>
|
88
|
+
</tr>
|
89
|
+
<tr>
|
90
|
+
<td>Real</td>
|
91
|
+
<td>00, 20, 31, 42, 47, 85.</td>
|
92
|
+
<td>Esperando Contribuição</td>
|
93
|
+
</tr>
|
68
94
|
<tr>
|
69
95
|
<td>Santander</td>
|
70
96
|
<td>101, 102, 121.</td>
|
71
97
|
<td>Esperando Contribuição</td>
|
72
98
|
</tr>
|
99
|
+
<tr>
|
100
|
+
<td>Sicoob</td>
|
101
|
+
<td>1, 9.</td>
|
102
|
+
<td>Esperando Contribuição</td>
|
103
|
+
</tr>
|
104
|
+
<tr>
|
105
|
+
<td>Sicredi</td>
|
106
|
+
<td>03, C.</td>
|
107
|
+
<td>Esperando Contribuição</td>
|
108
|
+
</tr>
|
73
109
|
</table>
|
74
110
|
|
75
111
|
**OBS.: Caso a homologação seja aceita junto ao banco, contribua e mude a seção acima. Caso recuse alguma carteira acima, por favor me avise, para tirar dessa lista.**
|
@@ -85,17 +121,17 @@ Você pode usar as próprias classes da gem, porém, **recomendo criar uma subcl
|
|
85
121
|
### Exemplo
|
86
122
|
|
87
123
|
```ruby
|
88
|
-
|
89
|
-
|
124
|
+
class BoletoItau < BoletoBancario::Itau
|
125
|
+
end
|
90
126
|
|
91
|
-
|
92
|
-
|
127
|
+
class BoletoSantander < BoletoBancario::Santander
|
128
|
+
end
|
93
129
|
|
94
|
-
|
95
|
-
|
130
|
+
class BoletoBradesco < BoletoBancario::Bradesco
|
131
|
+
end
|
96
132
|
|
97
|
-
|
98
|
-
|
133
|
+
class BoletoBancoBrasil < BoletoBancario::BancoBrasil
|
134
|
+
end
|
99
135
|
```
|
100
136
|
|
101
137
|
Segue os attributos dos boletos:
|
@@ -123,58 +159,65 @@ Segue os attributos dos boletos:
|
|
123
159
|
|
124
160
|
Agora você pode emitir um boleto, **usando a classe criada no exemplo acima**:
|
125
161
|
|
126
|
-
|
162
|
+
```ruby
|
163
|
+
BoletoItau.new(conta_corrente: '89755', agencia: '0097', :carteira => '195')
|
164
|
+
```
|
127
165
|
|
128
166
|
Você pode usar blocos se quiser:
|
129
167
|
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
168
|
+
```ruby
|
169
|
+
boleto_itau = BoletoItau.new do |boleto|
|
170
|
+
boleto.conta_corrente = '89755'
|
171
|
+
boleto.agencia = '0097'
|
172
|
+
boleto.carteira = '198'
|
173
|
+
boleto.cedente = 'Razao Social da Empresa'
|
174
|
+
boleto.codigo_cedente = '90901'
|
175
|
+
boleto.endereco_cedente = 'Rua nome da rua, 9999'
|
176
|
+
boleto.numero_documento = '12345678'
|
177
|
+
boleto.sacado = 'Nome do Sacado'
|
178
|
+
boleto.documento_sacado = '35433793990'
|
179
|
+
boleto.data_vencimento = Date.tomorrow
|
180
|
+
boleto.valor_documento = 31678.99
|
181
|
+
boleto.seu_numero = 1234
|
182
|
+
end
|
183
|
+
```
|
145
184
|
|
146
185
|
**Cada banco possui suas próprias validações de campo e de tamanho**.
|
147
186
|
Primeiramente, **antes de renderizar qualquer boleto você precisar verificar se esse o boleto é válido**.
|
148
187
|
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
188
|
+
```ruby
|
189
|
+
if boleto_itau.valid?
|
190
|
+
# Renderiza o boleto itau
|
191
|
+
else
|
192
|
+
# Trata os erros
|
193
|
+
end
|
194
|
+
```
|
154
195
|
|
155
196
|
### Campos do Boleto
|
156
197
|
|
157
198
|
Segue abaixo os métodos para serem chamados, no momento de renderizar os boletos. Os campos são de mesmo nome:
|
158
199
|
|
159
|
-
|
200
|
+
```ruby
|
201
|
+
boleto_itau.codigo_banco_formatado # Retorna o código do banco, junto com seu dígito
|
160
202
|
|
161
|
-
|
203
|
+
boleto_itau.codigo_de_barras
|
162
204
|
|
163
|
-
|
205
|
+
boleto_itau.linha_digitavel
|
164
206
|
|
165
|
-
|
207
|
+
boleto_itau.nosso_numero
|
166
208
|
|
167
|
-
|
209
|
+
boleto_itau.agencia_codigo_cedente
|
168
210
|
|
169
|
-
|
211
|
+
boleto_itau.carteira_formatada # Formata a carteira, para mostrar no boleto.
|
170
212
|
|
171
|
-
|
213
|
+
boleto_itau.numero_documento
|
172
214
|
|
173
|
-
|
215
|
+
boleto_itau.valor_documento
|
174
216
|
|
175
|
-
|
217
|
+
boleto_itau.especie
|
176
218
|
|
177
|
-
|
219
|
+
boleto_itau.especie_documento
|
220
|
+
```
|
178
221
|
|
179
222
|
## Sobrescrevendo comportamentos
|
180
223
|
|
@@ -183,18 +226,28 @@ Você pode sobrescrever os comportamentos na subclasse.
|
|
183
226
|
Por exemplo, imagine que você quer sobrescrever a forma como é tratada a segunda parte do código de barras.
|
184
227
|
**Seguindo a interface da classe BoletoBancario::Boleto** fica bem simples:
|
185
228
|
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
229
|
+
```ruby
|
230
|
+
class BoletoItau < BoletoBancario::Itau
|
231
|
+
def codigo_de_barras_do_banco
|
232
|
+
# Sua implementação ...
|
233
|
+
end
|
234
|
+
end
|
235
|
+
```
|
236
|
+
|
237
|
+
## Formatos (HTML, PDF e PNG)
|
238
|
+
|
239
|
+
### Objetivos para as próximas versões: criar os formatos dos boletos de:
|
240
|
+
|
241
|
+
* HTML
|
242
|
+
* PDF
|
243
|
+
* PNG
|
191
244
|
|
192
245
|
## O que a gem não faz
|
193
246
|
|
194
247
|
A gem não trata os arquivos de remessa e os arquivos de retorno do banco.
|
195
248
|
|
196
249
|
Na minha opinião não deveria ser responsabilidade dessa gem.
|
197
|
-
Essa gem **apenas emite o boleto**, com todas as informações necessárias
|
250
|
+
Essa gem **apenas emite o boleto**, com todas as informações necessárias do boleto.
|
198
251
|
|
199
252
|
## Contribuições
|
200
253
|
|
@@ -205,4 +258,3 @@ Seja um contribuidor. Você pode contribuir de N formas. Seguem elas:
|
|
205
258
|
* Escrevendo novos formatos (PDF, PNG), e me avisando para divulgar no Readme.
|
206
259
|
* Refatorando código!!
|
207
260
|
* Fornecendo Feedback construtivo! (Sempre bem vindo!)
|
208
|
-
|
data/Rakefile
CHANGED
@@ -1,9 +1,15 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
require 'bundler/gem_tasks'
|
3
3
|
require 'yard'
|
4
|
+
require 'rspec/core/rake_task'
|
5
|
+
|
6
|
+
task :default => :spec
|
7
|
+
|
8
|
+
desc 'Running Tests'
|
9
|
+
RSpec::Core::RakeTask.new(:spec)
|
4
10
|
|
5
11
|
desc 'Generate documentation'
|
6
12
|
YARD::Rake::YardocTask.new do |t|
|
7
13
|
t.files = ['lib/**/*.rb', '-', 'LICENSE']
|
8
14
|
t.options = ['--main', 'README.markdown', '--no-private', '--title', "Boleto Bancário #{BoletoBancario::VERSION}"]
|
9
|
-
end
|
15
|
+
end
|