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
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
|