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.
- checksums.yaml +7 -0
- data/Changelog.markdown +58 -2
- data/README.markdown +679 -156
- data/lib/boleto_bancario/calculos/documento.rb +191 -0
- data/lib/boleto_bancario/calculos/fator_vencimento.rb +78 -31
- 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 +97 -35
- data/lib/boleto_bancario/core/bradesco.rb +28 -16
- data/lib/boleto_bancario/core/c6_bank.rb +155 -0
- data/lib/boleto_bancario/core/caixa.rb +233 -0
- data/lib/boleto_bancario/core/inter.rb +155 -0
- data/lib/boleto_bancario/core/itau.rb +20 -10
- data/lib/boleto_bancario/core/nubank.rb +156 -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/locales/pt-BR.yml +55 -0
- data/lib/boleto_bancario/renderers/base.rb +154 -0
- data/lib/boleto_bancario/renderers/html_renderer.rb +92 -0
- data/lib/boleto_bancario/renderers/pdf_renderer.rb +130 -0
- data/lib/boleto_bancario/renderers/png_renderer.rb +66 -0
- data/lib/boleto_bancario/templates/_barcode.html.erb +3 -0
- data/lib/boleto_bancario/templates/_cedente.html.erb +14 -0
- data/lib/boleto_bancario/templates/_header.html.erb +4 -0
- data/lib/boleto_bancario/templates/_instructions.html.erb +10 -0
- data/lib/boleto_bancario/templates/_payment.html.erb +36 -0
- data/lib/boleto_bancario/templates/_sacado.html.erb +10 -0
- data/lib/boleto_bancario/templates/boleto.html.erb +22 -0
- data/lib/boleto_bancario/templates/boleto_styles.css +18 -0
- data/lib/boleto_bancario/version.rb +3 -2
- data/lib/boleto_bancario.rb +48 -19
- data/lib/generators/boleto_bancario/views_generator.rb +47 -0
- metadata +140 -106
- data/.gitignore +0 -18
- data/.rspec +0 -1
- data/.rvmrc +0 -1
- data/Gemfile +0 -3
- data/Planning.markdown +0 -131
- data/Rakefile +0 -9
- data/TODO.markdown +0 -5
- data/boleto_bancario.gemspec +0 -25
- data/documentacoes_dos_boletos/Bradesco/Manual_BRADESCO.PDF +0 -0
- data/spec/boleto_bancario/calculos/digitos_spec.rb +0 -19
- data/spec/boleto_bancario/calculos/fator_vencimento_spec.rb +0 -59
- data/spec/boleto_bancario/calculos/fatores_de_multiplicacao_spec.rb +0 -69
- data/spec/boleto_bancario/calculos/linha_digitavel_spec.rb +0 -57
- data/spec/boleto_bancario/calculos/modulo10_spec.rb +0 -49
- data/spec/boleto_bancario/calculos/modulo11_fator_de2a7_spec.rb +0 -43
- data/spec/boleto_bancario/calculos/modulo11_fator_de2a9_resto_zero_spec.rb +0 -39
- data/spec/boleto_bancario/calculos/modulo11_fator_de2a9_spec.rb +0 -61
- data/spec/boleto_bancario/calculos/modulo11_fator_de9a2_resto_x_spec.rb +0 -37
- data/spec/boleto_bancario/calculos/modulo11_spec.rb +0 -19
- data/spec/boleto_bancario/core/banco_brasil_spec.rb +0 -383
- data/spec/boleto_bancario/core/boleto_spec.rb +0 -102
- data/spec/boleto_bancario/core/bradesco_spec.rb +0 -170
- data/spec/boleto_bancario/core/itau_spec.rb +0 -336
- data/spec/boleto_bancario/core/santander_spec.rb +0 -135
- data/spec/shared_examples/boleto_bancario_shared_example.rb +0 -164
- data/spec/spec_helper.rb +0 -14
data/README.markdown
CHANGED
|
@@ -1,208 +1,731 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Boleto Bancário
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://github.com/tomas-stefano/boleto_bancario/actions/workflows/ci.yml)
|
|
4
|
+
[](https://badge.fury.io/rb/boleto_bancario)
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
Gem para emissão de boletos bancários em Ruby.
|
|
6
7
|
|
|
7
|
-
##
|
|
8
|
+
## Requisitos
|
|
8
9
|
|
|
9
|
-
|
|
10
|
+
- Ruby 3.1 ou superior
|
|
11
|
+
- Rails 7.1 ou superior (opcional)
|
|
10
12
|
|
|
11
|
-
##
|
|
13
|
+
## Instalação
|
|
12
14
|
|
|
13
|
-
|
|
14
|
-
**Recomendo analisar muito bem cada solução**:
|
|
15
|
+
Adicione ao seu Gemfile:
|
|
15
16
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
* Boleto Php [http://boletophp.com.br/](http://boletophp.com.br/)
|
|
20
|
-
* Gem de Boleto Bancário (essa gem) [https://github.com/tomas-stefano/boleto_bancario](https://github.com/tomas-stefano/boleto_bancario)
|
|
17
|
+
```ruby
|
|
18
|
+
gem 'boleto_bancario'
|
|
19
|
+
```
|
|
21
20
|
|
|
22
|
-
|
|
21
|
+
Ou instale diretamente:
|
|
23
22
|
|
|
24
|
-
|
|
23
|
+
```bash
|
|
24
|
+
gem install boleto_bancario
|
|
25
|
+
```
|
|
25
26
|
|
|
26
|
-
##
|
|
27
|
+
## Bancos Suportados
|
|
27
28
|
|
|
28
|
-
|
|
29
|
+
| Banco | Código | Carteiras |
|
|
30
|
+
|-------|--------|-----------|
|
|
31
|
+
| Banco do Brasil | 001 | 12, 16, 17, 18 |
|
|
32
|
+
| Banrisul | 041 | 00, 08 |
|
|
33
|
+
| Bradesco | 237 | 03, 06, 09, 19, 21, 22 |
|
|
34
|
+
| Caixa Econômica | 104 | 14, 24 |
|
|
35
|
+
| Itaú | 341 | 107, 109, 122, 126, 131, 142, 143, 146, 150, 168, 174, 175, 196, 198 |
|
|
36
|
+
| Santander | 033 | 101, 102, 121 |
|
|
37
|
+
| Sicoob | 756 | 1, 9 |
|
|
38
|
+
| Sicredi | 748 | 03, C |
|
|
39
|
+
| **Nubank** | 260 | 1 |
|
|
40
|
+
| **Inter** | 077 | 112 |
|
|
41
|
+
| **C6 Bank** | 336 | 1 |
|
|
29
42
|
|
|
30
|
-
|
|
31
|
-
* [Banco do Brasil](https://github.com/tomas-stefano/boleto_bancario/tree/master/documentacoes_dos_boletos/banco_brasil)
|
|
32
|
-
* [Itaú](https://github.com/tomas-stefano/boleto_bancario/tree/master/documentacoes_dos_boletos/itau)
|
|
33
|
-
* [Santander](https://github.com/tomas-stefano/boleto_bancario/tree/master/documentacoes_dos_boletos/santander)
|
|
43
|
+
## Uso Básico
|
|
34
44
|
|
|
35
|
-
|
|
45
|
+
### Criando um Boleto
|
|
36
46
|
|
|
37
|
-
|
|
47
|
+
```ruby
|
|
48
|
+
boleto = BoletoBancario::Itau.new do |b|
|
|
49
|
+
b.agencia = '0097'
|
|
50
|
+
b.conta_corrente = '89755'
|
|
51
|
+
b.carteira = '198'
|
|
52
|
+
b.cedente = 'Razão Social da Empresa'
|
|
53
|
+
b.codigo_cedente = '90901'
|
|
54
|
+
b.endereco_cedente = 'Rua Exemplo, 123 - São Paulo/SP'
|
|
55
|
+
b.numero_documento = '12345678'
|
|
56
|
+
b.sacado = 'Nome do Cliente'
|
|
57
|
+
b.documento_sacado = '123.456.789-00'
|
|
58
|
+
b.data_vencimento = Date.today + 5
|
|
59
|
+
b.valor_documento = 199.90
|
|
60
|
+
end
|
|
61
|
+
```
|
|
38
62
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
<table>
|
|
42
|
-
<tr>
|
|
43
|
-
<th>Nome do Banco</th>
|
|
44
|
-
<th>Carteiras Suportadas</th>
|
|
45
|
-
<th>Testada/Homologada no banco</th>
|
|
46
|
-
</tr>
|
|
47
|
-
<tr>
|
|
48
|
-
<td>Banco do Brasil</td>
|
|
49
|
-
<td>
|
|
50
|
-
12 com código do cedente de 6 dígitos,
|
|
51
|
-
16 e 18 com código do cedente de 4 dígitos,
|
|
52
|
-
16 e 18 com código do cedente e nosso número de 17 dígitos,
|
|
53
|
-
16 e 18 com código do cedente de 6 dígitos,
|
|
54
|
-
16, 17 e 18 código do cedente de 7 e 8 dígitos.
|
|
55
|
-
</td>
|
|
56
|
-
<td>Esperando Contribuição</td>
|
|
57
|
-
</tr>
|
|
58
|
-
<tr>
|
|
59
|
-
<td>Itaú</td>
|
|
60
|
-
<td>107, 109, 122, 142, 143, 126, 174, 175, 196, 198, 131, 146, 150, 168.</td>
|
|
61
|
-
<td>Esperando Contribuição</td>
|
|
62
|
-
</tr>
|
|
63
|
-
<tr>
|
|
64
|
-
<td>Bradesco</td>
|
|
65
|
-
<td>03, 06, 09, 19, 21, 22.</td>
|
|
66
|
-
<td>Esperando Contribuição</td>
|
|
67
|
-
</tr>
|
|
68
|
-
<tr>
|
|
69
|
-
<td>Santander</td>
|
|
70
|
-
<td>101, 102, 121.</td>
|
|
71
|
-
<td>Esperando Contribuição</td>
|
|
72
|
-
</tr>
|
|
73
|
-
</table>
|
|
74
|
-
|
|
75
|
-
**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.**
|
|
76
|
-
|
|
77
|
-
## Homologação no Banco
|
|
78
|
-
|
|
79
|
-
Uma ótima forma de contribuir para a gem, é validar junto ao banco os boletos implementados acima.
|
|
80
|
-
|
|
81
|
-
## Usage
|
|
82
|
-
|
|
83
|
-
Você pode usar as próprias classes da gem, porém, **recomendo criar uma subclasse** para os bancos que você gostaria de desenvolver.
|
|
84
|
-
|
|
85
|
-
### Exemplo
|
|
86
|
-
|
|
87
|
-
```ruby
|
|
88
|
-
class BoletoItau < BoletoBancario::Itau
|
|
89
|
-
end
|
|
63
|
+
### Validando o Boleto
|
|
90
64
|
|
|
91
|
-
|
|
92
|
-
end
|
|
65
|
+
Cada banco possui suas próprias validações. Sempre verifique se o boleto é válido antes de renderizar:
|
|
93
66
|
|
|
94
|
-
|
|
67
|
+
```ruby
|
|
68
|
+
if boleto.valid?
|
|
69
|
+
# Boleto válido, pode renderizar
|
|
70
|
+
else
|
|
71
|
+
boleto.errors.full_messages.each do |erro|
|
|
72
|
+
puts erro
|
|
95
73
|
end
|
|
74
|
+
end
|
|
75
|
+
```
|
|
96
76
|
|
|
97
|
-
|
|
98
|
-
|
|
77
|
+
### Acessando os Dados do Boleto
|
|
78
|
+
|
|
79
|
+
```ruby
|
|
80
|
+
boleto.codigo_banco_formatado # => "341-7"
|
|
81
|
+
boleto.codigo_de_barras # => "34191..."
|
|
82
|
+
boleto.linha_digitavel # => "34191.75009 00000.000002..."
|
|
83
|
+
boleto.nosso_numero # => "198/12345678-3"
|
|
84
|
+
boleto.agencia_codigo_cedente # => "0097 / 90901-0"
|
|
99
85
|
```
|
|
100
86
|
|
|
101
|
-
|
|
87
|
+
## Formatos de Saída
|
|
102
88
|
|
|
103
|
-
|
|
104
|
-
* Dígito da agência
|
|
105
|
-
* Conta Corrente
|
|
106
|
-
* Dígito da Conta Corrente
|
|
107
|
-
* Carteira
|
|
108
|
-
* Cedente
|
|
109
|
-
* Código do Cedente
|
|
110
|
-
* Documento do Cedente
|
|
111
|
-
* Endereço do Cedente
|
|
112
|
-
* Sacado
|
|
113
|
-
* Documento do Sacado
|
|
114
|
-
* Código da Moeda
|
|
115
|
-
* Data do documento
|
|
116
|
-
* Data do vencimento
|
|
117
|
-
* Número do documento
|
|
118
|
-
* Valor do documento (valor do boleto)
|
|
119
|
-
* Espécie
|
|
120
|
-
* Espécie do documento
|
|
89
|
+
### PDF
|
|
121
90
|
|
|
122
|
-
|
|
91
|
+
Gera o boleto em formato PDF usando Prawn:
|
|
123
92
|
|
|
124
|
-
|
|
93
|
+
```ruby
|
|
94
|
+
boleto.to_pdf
|
|
95
|
+
# => String com o conteúdo binário do PDF
|
|
125
96
|
|
|
126
|
-
|
|
97
|
+
# Salvando em arquivo
|
|
98
|
+
File.binwrite('boleto.pdf', boleto.to_pdf)
|
|
99
|
+
```
|
|
127
100
|
|
|
128
|
-
|
|
101
|
+
### HTML
|
|
102
|
+
|
|
103
|
+
Gera o boleto em formato HTML:
|
|
104
|
+
|
|
105
|
+
```ruby
|
|
106
|
+
boleto.to_html
|
|
107
|
+
# => String com o HTML completo do boleto
|
|
108
|
+
```
|
|
129
109
|
|
|
130
|
-
|
|
131
|
-
boleto_itau.conta_corrente = '89755'
|
|
132
|
-
boleto_itau.digito_conta_corrente = '1'
|
|
133
|
-
boleto_itau.agencia = '0097'
|
|
134
|
-
boleto_itau.carteira = '198'
|
|
135
|
-
boleto_itau.cedente = 'Razao Social da Empresa'
|
|
136
|
-
boleto_itau.codigo_cedente = '90901'
|
|
137
|
-
boleto_itau.endereco_cedente = 'Rua nome da rua, 9999'
|
|
138
|
-
boleto_itau.numero_documento = '12345678'
|
|
139
|
-
boleto_itau.sacado = 'Nome do Sacado'
|
|
140
|
-
boleto_itau.documento_sacado = '35433793990'
|
|
141
|
-
boleto_itau.data_vencimento = Date.tomorrow
|
|
142
|
-
boleto_itau.valor_documento = 31678.99
|
|
143
|
-
boleto_itau.seu_numero = 1234
|
|
144
|
-
end
|
|
110
|
+
### PNG (Código de Barras)
|
|
145
111
|
|
|
146
|
-
|
|
147
|
-
Primeiramente, **antes de renderizar qualquer boleto você precisar verificar se esse o boleto é válido**.
|
|
112
|
+
Gera apenas a imagem do código de barras:
|
|
148
113
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
# Trata os erros
|
|
153
|
-
end
|
|
114
|
+
```ruby
|
|
115
|
+
boleto.to_png
|
|
116
|
+
# => String com o conteúdo binário do PNG
|
|
154
117
|
|
|
155
|
-
|
|
118
|
+
# Com opções customizadas
|
|
119
|
+
boleto.to_png(height: 80, margin: 20)
|
|
156
120
|
|
|
157
|
-
|
|
121
|
+
# Salvando em arquivo
|
|
122
|
+
File.binwrite('codigo_barras.png', boleto.to_png)
|
|
123
|
+
```
|
|
158
124
|
|
|
159
|
-
|
|
125
|
+
### Customizando Templates HTML
|
|
160
126
|
|
|
161
|
-
|
|
127
|
+
O HTML é gerado usando templates ERB que podem ser customizados.
|
|
162
128
|
|
|
163
|
-
|
|
129
|
+
#### Usando um Caminho Customizado
|
|
164
130
|
|
|
165
|
-
|
|
131
|
+
```ruby
|
|
132
|
+
class MeuHtmlRenderer < BoletoBancario::Renderers::HtmlRenderer
|
|
133
|
+
self.template_path = '/caminho/para/meus/templates'
|
|
134
|
+
end
|
|
166
135
|
|
|
167
|
-
|
|
136
|
+
boleto = BoletoBancario::Itau.new(...)
|
|
137
|
+
renderer = MeuHtmlRenderer.new(boleto)
|
|
138
|
+
html = renderer.render
|
|
139
|
+
```
|
|
168
140
|
|
|
169
|
-
|
|
141
|
+
#### Estrutura dos Templates
|
|
170
142
|
|
|
171
|
-
|
|
143
|
+
Os templates padrão estão em `lib/boleto_bancario/templates/`:
|
|
172
144
|
|
|
173
|
-
|
|
145
|
+
| Arquivo | Descrição |
|
|
146
|
+
|---------|-----------|
|
|
147
|
+
| `boleto.html.erb` | Template principal |
|
|
148
|
+
| `boleto_styles.css` | Estilos CSS |
|
|
149
|
+
| `_header.html.erb` | Cabeçalho com nome e código do banco |
|
|
150
|
+
| `_cedente.html.erb` | Dados do cedente |
|
|
151
|
+
| `_sacado.html.erb` | Dados do sacado |
|
|
152
|
+
| `_payment.html.erb` | Informações de pagamento |
|
|
153
|
+
| `_instructions.html.erb` | Instruções do boleto |
|
|
154
|
+
| `_barcode.html.erb` | Código de barras |
|
|
174
155
|
|
|
175
|
-
|
|
156
|
+
#### Rails: Copiando Templates
|
|
176
157
|
|
|
177
|
-
|
|
158
|
+
```bash
|
|
159
|
+
rails generate boleto_bancario:views
|
|
160
|
+
```
|
|
178
161
|
|
|
179
|
-
|
|
162
|
+
Isso copia os templates para `app/views/boletos/`, onde você pode customizá-los.
|
|
180
163
|
|
|
181
|
-
|
|
164
|
+
#### Rails: Renderizando com Partials
|
|
182
165
|
|
|
183
|
-
|
|
184
|
-
**Seguindo a interface da classe BoletoBancario::Boleto** fica bem simples:
|
|
166
|
+
O boleto suporta `to_partial_path` para integração com Rails:
|
|
185
167
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
168
|
+
```erb
|
|
169
|
+
<%# app/views/boletos/_itau.html.erb %>
|
|
170
|
+
<div class="meu-boleto-customizado">
|
|
171
|
+
<h1><%= boleto.cedente %></h1>
|
|
172
|
+
<p>Valor: R$ <%= number_to_currency(boleto.valor_documento) %></p>
|
|
173
|
+
<!-- ... -->
|
|
174
|
+
</div>
|
|
191
175
|
|
|
192
|
-
|
|
176
|
+
<%# Em qualquer view %>
|
|
177
|
+
<%= render @boleto %>
|
|
178
|
+
```
|
|
193
179
|
|
|
194
|
-
|
|
180
|
+
## Exemplos por Banco
|
|
195
181
|
|
|
196
|
-
|
|
197
|
-
|
|
182
|
+
### Banco do Brasil
|
|
183
|
+
|
|
184
|
+
```ruby
|
|
185
|
+
# Carteira 18 com código do cedente de 6 dígitos
|
|
186
|
+
boleto = BoletoBancario::BancoBrasil.new do |b|
|
|
187
|
+
b.agencia = '1234'
|
|
188
|
+
b.digito_agencia = '1'
|
|
189
|
+
b.conta_corrente = '12345678'
|
|
190
|
+
b.digito_conta_corrente = '9'
|
|
191
|
+
b.carteira = '18'
|
|
192
|
+
b.cedente = 'Padaria do João LTDA'
|
|
193
|
+
b.documento_cedente = '12.345.678/0001-90'
|
|
194
|
+
b.codigo_cedente = '123456'
|
|
195
|
+
b.endereco_cedente = 'Rua das Flores, 100 - Centro - Brasília/DF'
|
|
196
|
+
b.numero_documento = '12345'
|
|
197
|
+
b.sacado = 'Maria Silva'
|
|
198
|
+
b.documento_sacado = '123.456.789-00'
|
|
199
|
+
b.endereco_sacado = 'Av. Brasil, 500 - Apt 101 - São Paulo/SP'
|
|
200
|
+
b.data_vencimento = Date.today + 10
|
|
201
|
+
b.valor_documento = 1250.00
|
|
202
|
+
b.instrucoes = 'Não receber após o vencimento. Juros de 1% ao mês.'
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
# Verificando os dados gerados
|
|
206
|
+
boleto.codigo_banco_formatado # => "001-9"
|
|
207
|
+
boleto.nosso_numero # => "12345678-12345-17"
|
|
208
|
+
boleto.agencia_codigo_cedente # => "1234-1 / 123456"
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
### Banrisul
|
|
212
|
+
|
|
213
|
+
```ruby
|
|
214
|
+
# Carteira 00 - Cobrança Simples
|
|
215
|
+
boleto = BoletoBancario::Banrisul.new do |b|
|
|
216
|
+
b.agencia = '1102'
|
|
217
|
+
b.digito_agencia = '72'
|
|
218
|
+
b.conta_corrente = '9000150'
|
|
219
|
+
b.digito_conta_corrente = '46'
|
|
220
|
+
b.carteira = '00'
|
|
221
|
+
b.cedente = 'Loja de Informática RS LTDA'
|
|
222
|
+
b.documento_cedente = '98.765.432/0001-10'
|
|
223
|
+
b.endereco_cedente = 'Av. Ipiranga, 1000 - Porto Alegre/RS'
|
|
224
|
+
b.numero_documento = '22832563'
|
|
225
|
+
b.sacado = 'José Santos'
|
|
226
|
+
b.documento_sacado = '987.654.321-00'
|
|
227
|
+
b.endereco_sacado = 'Rua Voluntários da Pátria, 200 - Porto Alegre/RS'
|
|
228
|
+
b.data_vencimento = Date.today + 15
|
|
229
|
+
b.valor_documento = 550.00
|
|
230
|
+
end
|
|
231
|
+
|
|
232
|
+
boleto.codigo_banco_formatado # => "041-8"
|
|
233
|
+
boleto.nosso_numero # => "22832563.42"
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
### Bradesco
|
|
237
|
+
|
|
238
|
+
```ruby
|
|
239
|
+
# Carteira 09 - Cobrança com Registro
|
|
240
|
+
boleto = BoletoBancario::Bradesco.new do |b|
|
|
241
|
+
b.agencia = '1234'
|
|
242
|
+
b.digito_agencia = '5'
|
|
243
|
+
b.conta_corrente = '1234567'
|
|
244
|
+
b.digito_conta_corrente = '0'
|
|
245
|
+
b.carteira = '09'
|
|
246
|
+
b.cedente = 'Distribuidora ABC LTDA'
|
|
247
|
+
b.documento_cedente = '11.222.333/0001-44'
|
|
248
|
+
b.endereco_cedente = 'Rua Augusta, 2000 - São Paulo/SP'
|
|
249
|
+
b.numero_documento = '12345678901'
|
|
250
|
+
b.sacado = 'Carlos Ferreira'
|
|
251
|
+
b.documento_sacado = '111.222.333-44'
|
|
252
|
+
b.endereco_sacado = 'Rua Oscar Freire, 300 - São Paulo/SP'
|
|
253
|
+
b.data_vencimento = Date.today + 7
|
|
254
|
+
b.valor_documento = 1890.50
|
|
255
|
+
b.instrucoes = 'Após vencimento cobrar multa de 2%'
|
|
256
|
+
end
|
|
257
|
+
|
|
258
|
+
boleto.codigo_banco_formatado # => "237-2"
|
|
259
|
+
boleto.nosso_numero # => "09/12345678901-P"
|
|
260
|
+
boleto.agencia_codigo_cedente # => "1234-5 / 1234567-0"
|
|
261
|
+
|
|
262
|
+
# Carteira 06 - Cobrança Sem Registro
|
|
263
|
+
boleto_sem_registro = BoletoBancario::Bradesco.new do |b|
|
|
264
|
+
b.agencia = '1234'
|
|
265
|
+
b.conta_corrente = '1234567'
|
|
266
|
+
b.carteira = '06'
|
|
267
|
+
b.cedente = 'Distribuidora ABC LTDA'
|
|
268
|
+
b.numero_documento = '98765432101'
|
|
269
|
+
b.sacado = 'Ana Paula'
|
|
270
|
+
b.documento_sacado = '222.333.444-55'
|
|
271
|
+
b.data_vencimento = Date.today + 5
|
|
272
|
+
b.valor_documento = 350.00
|
|
273
|
+
end
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
### Caixa Econômica Federal
|
|
277
|
+
|
|
278
|
+
```ruby
|
|
279
|
+
# Carteira 14 - Cobrança Simples com Registro
|
|
280
|
+
boleto = BoletoBancario::Caixa.new do |b|
|
|
281
|
+
b.agencia = '1234'
|
|
282
|
+
b.conta_corrente = '123456'
|
|
283
|
+
b.carteira = '14'
|
|
284
|
+
b.cedente = 'Construtora XYZ LTDA'
|
|
285
|
+
b.documento_cedente = '33.444.555/0001-66'
|
|
286
|
+
b.codigo_cedente = '123456'
|
|
287
|
+
b.endereco_cedente = 'Setor Comercial Sul, Quadra 1 - Brasília/DF'
|
|
288
|
+
b.numero_documento = '000000000000001'
|
|
289
|
+
b.sacado = 'Roberto Almeida'
|
|
290
|
+
b.documento_sacado = '333.444.555-66'
|
|
291
|
+
b.endereco_sacado = 'SGAN 607, Bloco A - Brasília/DF'
|
|
292
|
+
b.data_vencimento = Date.today + 30
|
|
293
|
+
b.valor_documento = 15000.00
|
|
294
|
+
b.instrucoes = 'Referente à parcela 1/12 do contrato 12345'
|
|
295
|
+
end
|
|
296
|
+
|
|
297
|
+
boleto.codigo_banco_formatado # => "104-0"
|
|
298
|
+
boleto.nosso_numero # => "14000000000000001-0"
|
|
299
|
+
|
|
300
|
+
# Carteira 24 - Cobrança Sem Registro
|
|
301
|
+
boleto_sr = BoletoBancario::Caixa.new do |b|
|
|
302
|
+
b.agencia = '1234'
|
|
303
|
+
b.conta_corrente = '123456'
|
|
304
|
+
b.carteira = '24'
|
|
305
|
+
b.cedente = 'Construtora XYZ LTDA'
|
|
306
|
+
b.codigo_cedente = '123456'
|
|
307
|
+
b.numero_documento = '000000000000002'
|
|
308
|
+
b.sacado = 'Fernanda Costa'
|
|
309
|
+
b.documento_sacado = '444.555.666-77'
|
|
310
|
+
b.data_vencimento = Date.today + 15
|
|
311
|
+
b.valor_documento = 8500.00
|
|
312
|
+
end
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
### Itaú
|
|
316
|
+
|
|
317
|
+
```ruby
|
|
318
|
+
# Carteira 198 - Cobrança com Registro
|
|
319
|
+
boleto = BoletoBancario::Itau.new do |b|
|
|
320
|
+
b.agencia = '0097'
|
|
321
|
+
b.conta_corrente = '12345'
|
|
322
|
+
b.digito_conta_corrente = '7'
|
|
323
|
+
b.carteira = '198'
|
|
324
|
+
b.cedente = 'Tech Solutions LTDA'
|
|
325
|
+
b.documento_cedente = '55.666.777/0001-88'
|
|
326
|
+
b.codigo_cedente = '12345'
|
|
327
|
+
b.endereco_cedente = 'Av. Paulista, 1500 - 10º andar - São Paulo/SP'
|
|
328
|
+
b.numero_documento = '12345678'
|
|
329
|
+
b.sacado = 'Pedro Henrique'
|
|
330
|
+
b.documento_sacado = '555.666.777-88'
|
|
331
|
+
b.endereco_sacado = 'Rua Consolação, 100 - São Paulo/SP'
|
|
332
|
+
b.data_vencimento = Date.today + 5
|
|
333
|
+
b.valor_documento = 2500.00
|
|
334
|
+
b.seu_numero = '1234'
|
|
335
|
+
b.instrucoes = 'Cobrar juros de 0,033% ao dia após vencimento'
|
|
336
|
+
end
|
|
337
|
+
|
|
338
|
+
boleto.codigo_banco_formatado # => "341-7"
|
|
339
|
+
boleto.nosso_numero # => "198/12345678-2"
|
|
340
|
+
boleto.agencia_codigo_cedente # => "0097 / 12345-7"
|
|
341
|
+
|
|
342
|
+
# Carteira 109 - Direta Eletrônica sem Registro
|
|
343
|
+
boleto_109 = BoletoBancario::Itau.new do |b|
|
|
344
|
+
b.agencia = '0097'
|
|
345
|
+
b.conta_corrente = '12345'
|
|
346
|
+
b.carteira = '109'
|
|
347
|
+
b.cedente = 'Tech Solutions LTDA'
|
|
348
|
+
b.codigo_cedente = '12345'
|
|
349
|
+
b.numero_documento = '87654321'
|
|
350
|
+
b.sacado = 'Juliana Lima'
|
|
351
|
+
b.documento_sacado = '666.777.888-99'
|
|
352
|
+
b.data_vencimento = Date.today + 3
|
|
353
|
+
b.valor_documento = 199.90
|
|
354
|
+
end
|
|
355
|
+
|
|
356
|
+
# Carteira 175 - Cobrança com Registro com IOF
|
|
357
|
+
boleto_175 = BoletoBancario::Itau.new do |b|
|
|
358
|
+
b.agencia = '0097'
|
|
359
|
+
b.conta_corrente = '12345'
|
|
360
|
+
b.carteira = '175'
|
|
361
|
+
b.cedente = 'Seguradora ABC'
|
|
362
|
+
b.codigo_cedente = '12345'
|
|
363
|
+
b.numero_documento = '11111111'
|
|
364
|
+
b.sacado = 'Marcos Souza'
|
|
365
|
+
b.documento_sacado = '777.888.999-00'
|
|
366
|
+
b.data_vencimento = Date.today + 30
|
|
367
|
+
b.valor_documento = 5000.00
|
|
368
|
+
end
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
### Santander
|
|
372
|
+
|
|
373
|
+
```ruby
|
|
374
|
+
# Carteira 102 - Cobrança Simples com Registro
|
|
375
|
+
boleto = BoletoBancario::Santander.new do |b|
|
|
376
|
+
b.agencia = '1234'
|
|
377
|
+
b.conta_corrente = '1234567'
|
|
378
|
+
b.carteira = '102'
|
|
379
|
+
b.cedente = 'Importadora Global LTDA'
|
|
380
|
+
b.documento_cedente = '77.888.999/0001-00'
|
|
381
|
+
b.codigo_cedente = '1234567'
|
|
382
|
+
b.endereco_cedente = 'Av. das Nações Unidas, 12000 - São Paulo/SP'
|
|
383
|
+
b.numero_documento = '1234567890123'
|
|
384
|
+
b.sacado = 'Lucas Oliveira'
|
|
385
|
+
b.documento_sacado = '888.999.000-11'
|
|
386
|
+
b.endereco_sacado = 'Rua Funchal, 500 - São Paulo/SP'
|
|
387
|
+
b.data_vencimento = Date.today + 10
|
|
388
|
+
b.valor_documento = 3750.00
|
|
389
|
+
end
|
|
390
|
+
|
|
391
|
+
boleto.codigo_banco_formatado # => "033-7"
|
|
392
|
+
boleto.nosso_numero # => "1234567890123-4"
|
|
393
|
+
boleto.agencia_codigo_cedente # => "1234 / 1234567"
|
|
394
|
+
|
|
395
|
+
# Carteira 101 - Cobrança Simples Rápida
|
|
396
|
+
boleto_101 = BoletoBancario::Santander.new do |b|
|
|
397
|
+
b.agencia = '1234'
|
|
398
|
+
b.conta_corrente = '1234567'
|
|
399
|
+
b.carteira = '101'
|
|
400
|
+
b.cedente = 'Importadora Global LTDA'
|
|
401
|
+
b.codigo_cedente = '1234567'
|
|
402
|
+
b.numero_documento = '9876543210987'
|
|
403
|
+
b.sacado = 'Beatriz Mendes'
|
|
404
|
+
b.documento_sacado = '999.000.111-22'
|
|
405
|
+
b.data_vencimento = Date.today + 7
|
|
406
|
+
b.valor_documento = 890.00
|
|
407
|
+
end
|
|
408
|
+
```
|
|
409
|
+
|
|
410
|
+
### Sicoob
|
|
411
|
+
|
|
412
|
+
```ruby
|
|
413
|
+
# Carteira 1 - Simples com Registro
|
|
414
|
+
boleto = BoletoBancario::Sicoob.new do |b|
|
|
415
|
+
b.agencia = '3069'
|
|
416
|
+
b.conta_corrente = '828452'
|
|
417
|
+
b.carteira = '1'
|
|
418
|
+
b.cedente = 'Cooperativa Agrícola do Vale'
|
|
419
|
+
b.documento_cedente = '11.222.333/0001-44'
|
|
420
|
+
b.codigo_cedente = '828452'
|
|
421
|
+
b.convenio = '123456'
|
|
422
|
+
b.endereco_cedente = 'Rodovia BR-101, km 50 - Interior/MG'
|
|
423
|
+
b.numero_documento = '1234567'
|
|
424
|
+
b.sacado = 'Fazenda Santa Maria'
|
|
425
|
+
b.documento_sacado = '22.333.444/0001-55'
|
|
426
|
+
b.endereco_sacado = 'Fazenda Santa Maria, s/n - Zona Rural - Interior/MG'
|
|
427
|
+
b.data_vencimento = Date.today + 30
|
|
428
|
+
b.valor_documento = 25000.00
|
|
429
|
+
b.instrucoes = 'Referente à compra de insumos agrícolas'
|
|
430
|
+
end
|
|
431
|
+
|
|
432
|
+
boleto.codigo_banco_formatado # => "756-0"
|
|
433
|
+
boleto.nosso_numero # => "1234567-4"
|
|
434
|
+
boleto.agencia_codigo_cedente # => "3069 / 828452"
|
|
435
|
+
|
|
436
|
+
# Carteira 9 - Sem Registro
|
|
437
|
+
boleto_9 = BoletoBancario::Sicoob.new do |b|
|
|
438
|
+
b.agencia = '3069'
|
|
439
|
+
b.conta_corrente = '828452'
|
|
440
|
+
b.carteira = '9'
|
|
441
|
+
b.cedente = 'Cooperativa Agrícola do Vale'
|
|
442
|
+
b.codigo_cedente = '828452'
|
|
443
|
+
b.convenio = '123456'
|
|
444
|
+
b.numero_documento = '7654321'
|
|
445
|
+
b.sacado = 'Sítio Boa Vista'
|
|
446
|
+
b.documento_sacado = '33.444.555/0001-66'
|
|
447
|
+
b.data_vencimento = Date.today + 15
|
|
448
|
+
b.valor_documento = 8500.00
|
|
449
|
+
end
|
|
450
|
+
```
|
|
451
|
+
|
|
452
|
+
### Sicredi
|
|
453
|
+
|
|
454
|
+
```ruby
|
|
455
|
+
# Carteira 03 - Cobrança com Registro
|
|
456
|
+
boleto = BoletoBancario::Sicredi.new do |b|
|
|
457
|
+
b.agencia = '0710'
|
|
458
|
+
b.conta_corrente = '54321'
|
|
459
|
+
b.carteira = '03'
|
|
460
|
+
b.posto = '08'
|
|
461
|
+
b.byte_id = '2'
|
|
462
|
+
b.cedente = 'Supermercado Bom Preço LTDA'
|
|
463
|
+
b.documento_cedente = '44.555.666/0001-77'
|
|
464
|
+
b.endereco_cedente = 'Av. Central, 500 - Centro - Interior/RS'
|
|
465
|
+
b.numero_documento = '12345'
|
|
466
|
+
b.sacado = 'João da Silva'
|
|
467
|
+
b.documento_sacado = '444.555.666-77'
|
|
468
|
+
b.endereco_sacado = 'Rua das Palmeiras, 100 - Interior/RS'
|
|
469
|
+
b.data_vencimento = Date.today + 7
|
|
470
|
+
b.valor_documento = 450.00
|
|
471
|
+
end
|
|
472
|
+
|
|
473
|
+
boleto.codigo_banco_formatado # => "748-X"
|
|
474
|
+
boleto.agencia_codigo_cedente # => "0710.08.54321"
|
|
475
|
+
|
|
476
|
+
# Carteira C - Correspondente
|
|
477
|
+
boleto_c = BoletoBancario::Sicredi.new do |b|
|
|
478
|
+
b.agencia = '0710'
|
|
479
|
+
b.conta_corrente = '54321'
|
|
480
|
+
b.carteira = 'C'
|
|
481
|
+
b.posto = '08'
|
|
482
|
+
b.byte_id = '3'
|
|
483
|
+
b.cedente = 'Supermercado Bom Preço LTDA'
|
|
484
|
+
b.numero_documento = '54321'
|
|
485
|
+
b.sacado = 'Maria Aparecida'
|
|
486
|
+
b.documento_sacado = '555.666.777-88'
|
|
487
|
+
b.data_vencimento = Date.today + 10
|
|
488
|
+
b.valor_documento = 1200.00
|
|
489
|
+
end
|
|
490
|
+
```
|
|
491
|
+
|
|
492
|
+
### Nubank
|
|
493
|
+
|
|
494
|
+
```ruby
|
|
495
|
+
boleto = BoletoBancario::Nubank.new do |b|
|
|
496
|
+
b.agencia = '0001'
|
|
497
|
+
b.conta_corrente = '1234567890'
|
|
498
|
+
b.carteira = '1'
|
|
499
|
+
b.cedente = 'Startup Digital LTDA'
|
|
500
|
+
b.documento_cedente = '55.666.777/0001-88'
|
|
501
|
+
b.endereco_cedente = 'Rua Capote Valente, 39 - Pinheiros - São Paulo/SP'
|
|
502
|
+
b.numero_documento = '00012345678'
|
|
503
|
+
b.sacado = 'Amanda Torres'
|
|
504
|
+
b.documento_sacado = '666.777.888-99'
|
|
505
|
+
b.endereco_sacado = 'Av. Rebouças, 1000 - Apt 42 - São Paulo/SP'
|
|
506
|
+
b.data_vencimento = Date.today + 7
|
|
507
|
+
b.valor_documento = 299.90
|
|
508
|
+
b.instrucoes = 'Pagamento referente à assinatura mensal'
|
|
509
|
+
end
|
|
510
|
+
|
|
511
|
+
boleto.codigo_banco_formatado # => "260-0"
|
|
512
|
+
boleto.nosso_numero # => "00012345678-9"
|
|
513
|
+
boleto.agencia_codigo_cedente # => "0001 / 1234567890-3"
|
|
514
|
+
```
|
|
515
|
+
|
|
516
|
+
### Inter
|
|
517
|
+
|
|
518
|
+
```ruby
|
|
519
|
+
boleto = BoletoBancario::Inter.new do |b|
|
|
520
|
+
b.agencia = '0001'
|
|
521
|
+
b.conta_corrente = '9876543210'
|
|
522
|
+
b.carteira = '112'
|
|
523
|
+
b.cedente = 'E-commerce Express LTDA'
|
|
524
|
+
b.documento_cedente = '66.777.888/0001-99'
|
|
525
|
+
b.endereco_cedente = 'Av. Raja Gabaglia, 1000 - Belo Horizonte/MG'
|
|
526
|
+
b.numero_documento = '00098765432'
|
|
527
|
+
b.sacado = 'Ricardo Gomes'
|
|
528
|
+
b.documento_sacado = '777.888.999-00'
|
|
529
|
+
b.endereco_sacado = 'Rua da Bahia, 500 - Belo Horizonte/MG'
|
|
530
|
+
b.data_vencimento = Date.today + 5
|
|
531
|
+
b.valor_documento = 1599.00
|
|
532
|
+
b.instrucoes = 'Pedido #98765 - Entrega expressa inclusa'
|
|
533
|
+
end
|
|
534
|
+
|
|
535
|
+
boleto.codigo_banco_formatado # => "077-9"
|
|
536
|
+
boleto.nosso_numero # => "00098765432-9"
|
|
537
|
+
boleto.agencia_codigo_cedente # => "0001 / 9876543210-3"
|
|
538
|
+
```
|
|
539
|
+
|
|
540
|
+
### C6 Bank
|
|
541
|
+
|
|
542
|
+
```ruby
|
|
543
|
+
boleto = BoletoBancario::C6Bank.new do |b|
|
|
544
|
+
b.agencia = '0001'
|
|
545
|
+
b.conta_corrente = '5678901234'
|
|
546
|
+
b.carteira = '1'
|
|
547
|
+
b.cedente = 'Fintech Solutions LTDA'
|
|
548
|
+
b.documento_cedente = '77.888.999/0001-00'
|
|
549
|
+
b.endereco_cedente = 'Av. Faria Lima, 3000 - 15º andar - São Paulo/SP'
|
|
550
|
+
b.numero_documento = '00056789012'
|
|
551
|
+
b.sacado = 'Camila Rodrigues'
|
|
552
|
+
b.documento_sacado = '888.999.000-11'
|
|
553
|
+
b.endereco_sacado = 'Rua Pamplona, 200 - São Paulo/SP'
|
|
554
|
+
b.data_vencimento = Date.today + 10
|
|
555
|
+
b.valor_documento = 4500.00
|
|
556
|
+
b.instrucoes = 'Parcela 3/6 - Contrato de serviços'
|
|
557
|
+
end
|
|
558
|
+
|
|
559
|
+
boleto.codigo_banco_formatado # => "336-5"
|
|
560
|
+
boleto.nosso_numero # => "00056789012-4"
|
|
561
|
+
boleto.agencia_codigo_cedente # => "0001 / 5678901234-3"
|
|
562
|
+
```
|
|
563
|
+
|
|
564
|
+
## Herança e Customização
|
|
565
|
+
|
|
566
|
+
Recomendamos criar subclasses para cada banco utilizado na sua aplicação:
|
|
567
|
+
|
|
568
|
+
```ruby
|
|
569
|
+
class MeuBoletoItau < BoletoBancario::Itau
|
|
570
|
+
# Valores padrão para sua empresa
|
|
571
|
+
def default_values
|
|
572
|
+
super.merge(
|
|
573
|
+
cedente: 'Minha Empresa LTDA',
|
|
574
|
+
endereco_cedente: 'Rua Principal, 100 - São Paulo/SP',
|
|
575
|
+
agencia: '1234',
|
|
576
|
+
conta_corrente: '56789',
|
|
577
|
+
carteira: '109'
|
|
578
|
+
)
|
|
579
|
+
end
|
|
580
|
+
end
|
|
581
|
+
|
|
582
|
+
# Uso simplificado
|
|
583
|
+
boleto = MeuBoletoItau.new(
|
|
584
|
+
numero_documento: '123',
|
|
585
|
+
sacado: 'Cliente',
|
|
586
|
+
documento_sacado: '123.456.789-00',
|
|
587
|
+
data_vencimento: Date.today + 5,
|
|
588
|
+
valor_documento: 100.00
|
|
589
|
+
)
|
|
590
|
+
```
|
|
591
|
+
|
|
592
|
+
### Sobrescrevendo Comportamentos
|
|
593
|
+
|
|
594
|
+
```ruby
|
|
595
|
+
class MeuBoletoBradesco < BoletoBancario::Bradesco
|
|
596
|
+
# Customiza o código de barras do banco
|
|
597
|
+
def codigo_de_barras_do_banco
|
|
598
|
+
# Sua implementação customizada
|
|
599
|
+
end
|
|
600
|
+
|
|
601
|
+
# Customiza a formatação do nosso número
|
|
602
|
+
def nosso_numero
|
|
603
|
+
# Sua implementação customizada
|
|
604
|
+
end
|
|
605
|
+
end
|
|
606
|
+
```
|
|
607
|
+
|
|
608
|
+
## Validação de CPF/CNPJ
|
|
609
|
+
|
|
610
|
+
A gem inclui utilitários para validação de documentos:
|
|
611
|
+
|
|
612
|
+
```ruby
|
|
613
|
+
# Validação
|
|
614
|
+
BoletoBancario::Calculos::Documento.valid?('123.456.789-09') # => true/false
|
|
615
|
+
BoletoBancario::Calculos::Documento.valid?('12.345.678/0001-95') # => true/false
|
|
616
|
+
|
|
617
|
+
# Formatação
|
|
618
|
+
BoletoBancario::Calculos::Documento.format('12345678909') # => "123.456.789-09"
|
|
619
|
+
BoletoBancario::Calculos::Documento.format('12345678000195') # => "12.345.678/0001-95"
|
|
620
|
+
```
|
|
621
|
+
|
|
622
|
+
## Atributos Disponíveis
|
|
623
|
+
|
|
624
|
+
| Atributo | Descrição |
|
|
625
|
+
|----------|-----------|
|
|
626
|
+
| `agencia` | Número da agência |
|
|
627
|
+
| `digito_agencia` | Dígito verificador da agência |
|
|
628
|
+
| `conta_corrente` | Número da conta corrente |
|
|
629
|
+
| `digito_conta_corrente` | Dígito verificador da conta |
|
|
630
|
+
| `carteira` | Código da carteira |
|
|
631
|
+
| `cedente` | Nome/Razão social do beneficiário |
|
|
632
|
+
| `codigo_cedente` | Código do cedente no banco |
|
|
633
|
+
| `documento_cedente` | CPF/CNPJ do beneficiário |
|
|
634
|
+
| `endereco_cedente` | Endereço do beneficiário |
|
|
635
|
+
| `sacado` | Nome do pagador |
|
|
636
|
+
| `documento_sacado` | CPF/CNPJ do pagador |
|
|
637
|
+
| `endereco_sacado` | Endereço do pagador |
|
|
638
|
+
| `numero_documento` | Número do documento/boleto |
|
|
639
|
+
| `data_documento` | Data de emissão |
|
|
640
|
+
| `data_vencimento` | Data de vencimento |
|
|
641
|
+
| `valor_documento` | Valor do boleto |
|
|
642
|
+
| `especie` | Espécie da moeda (padrão: R$) |
|
|
643
|
+
| `especie_documento` | Espécie do documento (padrão: DM) |
|
|
644
|
+
| `instrucoes` | Instruções para o caixa |
|
|
645
|
+
|
|
646
|
+
## Métodos Disponíveis
|
|
647
|
+
|
|
648
|
+
| Método | Descrição |
|
|
649
|
+
|--------|-----------|
|
|
650
|
+
| `codigo_banco` | Código do banco (3 dígitos) |
|
|
651
|
+
| `digito_codigo_banco` | Dígito do código do banco |
|
|
652
|
+
| `codigo_banco_formatado` | Código formatado (ex: "341-7") |
|
|
653
|
+
| `codigo_de_barras` | Código de barras (44 dígitos) |
|
|
654
|
+
| `linha_digitavel` | Linha digitável formatada |
|
|
655
|
+
| `nosso_numero` | Nosso número formatado |
|
|
656
|
+
| `agencia_codigo_cedente` | Agência/Código do cedente |
|
|
657
|
+
| `carteira_formatada` | Carteira formatada para exibição |
|
|
658
|
+
| `to_pdf` | Gera PDF do boleto |
|
|
659
|
+
| `to_html` | Gera HTML do boleto |
|
|
660
|
+
| `to_png` | Gera PNG do código de barras |
|
|
661
|
+
|
|
662
|
+
## FEBRABAN 2025
|
|
663
|
+
|
|
664
|
+
A partir de 22/02/2025, o cálculo do fator de vencimento foi atualizado conforme norma FEBRABAN:
|
|
665
|
+
|
|
666
|
+
- **Antes de 22/02/2025**: Data base 07/10/1997
|
|
667
|
+
- **A partir de 22/02/2025**: Data base 29/05/2022, fator reinicia em 1000
|
|
668
|
+
|
|
669
|
+
A gem trata essa transição automaticamente.
|
|
670
|
+
|
|
671
|
+
## Internacionalização (i18n)
|
|
672
|
+
|
|
673
|
+
A gem inclui traduções em português brasileiro. Para usar em outros idiomas:
|
|
674
|
+
|
|
675
|
+
```ruby
|
|
676
|
+
# config/locales/boleto_bancario.en.yml
|
|
677
|
+
en:
|
|
678
|
+
boleto_bancario:
|
|
679
|
+
cedente: "Beneficiary"
|
|
680
|
+
sacado: "Payer"
|
|
681
|
+
# ...
|
|
682
|
+
```
|
|
683
|
+
|
|
684
|
+
## O Que a Gem Não Faz
|
|
685
|
+
|
|
686
|
+
Esta gem é focada exclusivamente na **emissão de boletos**. Ela **não** trata:
|
|
687
|
+
|
|
688
|
+
- Arquivos de remessa (CNAB 240/400)
|
|
689
|
+
- Arquivos de retorno
|
|
690
|
+
- Integração com APIs bancárias
|
|
691
|
+
- Registro de boletos online
|
|
692
|
+
|
|
693
|
+
Para essas funcionalidades, considere usar gems complementares.
|
|
694
|
+
|
|
695
|
+
## Documentação dos Bancos
|
|
696
|
+
|
|
697
|
+
As documentações oficiais utilizadas estão disponíveis em:
|
|
698
|
+
|
|
699
|
+
- [documentacoes_dos_boletos/](documentacoes_dos_boletos/)
|
|
700
|
+
|
|
701
|
+
## Contribuindo
|
|
702
|
+
|
|
703
|
+
Contribuições são bem-vindas! Você pode ajudar de várias formas:
|
|
704
|
+
|
|
705
|
+
1. **Homologando boletos** junto aos bancos
|
|
706
|
+
2. **Reportando bugs** e abrindo issues
|
|
707
|
+
3. **Enviando pull requests** com melhorias
|
|
708
|
+
4. **Atualizando documentações** dos bancos
|
|
709
|
+
5. **Adicionando suporte** a novos bancos
|
|
710
|
+
|
|
711
|
+
### Desenvolvimento
|
|
712
|
+
|
|
713
|
+
```bash
|
|
714
|
+
# Clone o repositório
|
|
715
|
+
git clone https://github.com/tomas-stefano/boleto_bancario.git
|
|
716
|
+
cd boleto_bancario
|
|
717
|
+
|
|
718
|
+
# Instale as dependências
|
|
719
|
+
bundle install
|
|
720
|
+
|
|
721
|
+
# Execute os testes
|
|
722
|
+
bundle exec rspec
|
|
723
|
+
```
|
|
198
724
|
|
|
199
|
-
##
|
|
725
|
+
## Changelog
|
|
200
726
|
|
|
201
|
-
|
|
727
|
+
Veja o arquivo [Changelog.markdown](Changelog.markdown) para o histórico de alterações.
|
|
202
728
|
|
|
203
|
-
|
|
204
|
-
* Fornecendo documentações mais atualizadas dos Bancos.
|
|
205
|
-
* Escrevendo novos formatos (PDF, PNG), e me avisando para divulgar no Readme.
|
|
206
|
-
* Refatorando código!!
|
|
207
|
-
* Fornecendo Feedback construtivo! (Sempre bem vindo!)
|
|
729
|
+
## Licença
|
|
208
730
|
|
|
731
|
+
MIT License. Veja [LICENSE](LICENSE) para mais detalhes.
|