boleto_bancario 0.0.2 → 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 +5 -5
- data/Changelog.markdown +54 -2
- data/README.markdown +660 -189
- data/lib/boleto_bancario/calculos/documento.rb +191 -0
- data/lib/boleto_bancario/calculos/fator_vencimento.rb +78 -31
- data/lib/boleto_bancario/core/boleto.rb +30 -1
- data/lib/boleto_bancario/core/c6_bank.rb +155 -0
- data/lib/boleto_bancario/core/inter.rb +155 -0
- data/lib/boleto_bancario/core/nubank.rb +156 -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 -1
- data/lib/boleto_bancario.rb +23 -6
- data/lib/generators/boleto_bancario/views_generator.rb +47 -0
- metadata +91 -129
- data/.gitignore +0 -19
- data/.rspec +0 -1
- data/.travis.yml +0 -10
- data/Gemfile +0 -3
- data/Planning.markdown +0 -63
- data/Rakefile +0 -15
- data/TODO.markdown +0 -19
- data/boleto_bancario.gemspec +0 -29
- data/documentacoes_dos_boletos/Bradesco/Manual_BRADESCO.PDF +0 -0
- data/lib/boleto_bancario/core/hsbc.rb +0 -170
- data/lib/boleto_bancario/core/real.rb +0 -177
- 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 -53
- 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 -67
- data/spec/boleto_bancario/calculos/modulo11_fator_de9a2_resto_x_spec.rb +0 -37
- data/spec/boleto_bancario/calculos/modulo11_fator_de9a2_spec.rb +0 -31
- data/spec/boleto_bancario/calculos/modulo11_spec.rb +0 -19
- data/spec/boleto_bancario/calculos/modulo_numero_de_controle_spec.rb +0 -37
- data/spec/boleto_bancario/core/banco_brasil_spec.rb +0 -377
- data/spec/boleto_bancario/core/banrisul_spec.rb +0 -129
- data/spec/boleto_bancario/core/boleto_spec.rb +0 -218
- data/spec/boleto_bancario/core/bradesco_spec.rb +0 -163
- data/spec/boleto_bancario/core/caixa_spec.rb +0 -111
- data/spec/boleto_bancario/core/hsbc_spec.rb +0 -72
- data/spec/boleto_bancario/core/itau_spec.rb +0 -333
- data/spec/boleto_bancario/core/real_spec.rb +0 -104
- data/spec/boleto_bancario/core/santander_spec.rb +0 -137
- data/spec/boleto_bancario/core/sicoob_spec.rb +0 -111
- data/spec/boleto_bancario/core/sicredi_spec.rb +0 -149
- data/spec/inheritance/banco_brasil_spec.rb +0 -22
- data/spec/inheritance/banrisul_spec.rb +0 -22
- data/spec/inheritance/boleto_spec.rb +0 -15
- data/spec/inheritance/bradesco_spec.rb +0 -22
- data/spec/inheritance/caixa_spec.rb +0 -22
- data/spec/inheritance/hsbc_spec.rb +0 -22
- data/spec/inheritance/itau_spec.rb +0 -22
- data/spec/inheritance/real_spec.rb +0 -22
- data/spec/inheritance/santander_spec.rb +0 -22
- data/spec/inheritance/sicoob_spec.rb +0 -22
- data/spec/inheritance/sicredi_spec.rb +0 -22
- data/spec/shared_examples/boleto_bancario_shared_example.rb +0 -151
- data/spec/spec_helper.rb +0 -14
data/README.markdown
CHANGED
|
@@ -1,260 +1,731 @@
|
|
|
1
|
-
# Boleto
|
|
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
|
-
* [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)
|
|
43
|
+
## Uso Básico
|
|
40
44
|
|
|
41
|
-
|
|
45
|
+
### Criando um Boleto
|
|
42
46
|
|
|
43
|
-
|
|
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
|
+
```
|
|
44
62
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
<tr>
|
|
49
|
-
<th>Nome do Banco</th>
|
|
50
|
-
<th>Carteiras Suportadas</th>
|
|
51
|
-
<th>Testada/Homologada no banco</th>
|
|
52
|
-
</tr>
|
|
53
|
-
<tr>
|
|
54
|
-
<td>Banco do Brasil</td>
|
|
55
|
-
<td>
|
|
56
|
-
12 com código do cedente de 6 dígitos,
|
|
57
|
-
16 e 18 com código do cedente de 4 dígitos,
|
|
58
|
-
16 e 18 com código do cedente e nosso número de 17 dígitos,
|
|
59
|
-
16 e 18 com código do cedente de 6 dígitos,
|
|
60
|
-
16, 17 e 18 código do cedente de 7 e 8 dígitos.
|
|
61
|
-
</td>
|
|
62
|
-
<td>Esperando Contribuição</td>
|
|
63
|
-
</tr>
|
|
64
|
-
<tr>
|
|
65
|
-
<td>Banrisul</td>
|
|
66
|
-
<td>00, 08.</td>
|
|
67
|
-
<td>Esperando Contribuição</td>
|
|
68
|
-
</tr>
|
|
69
|
-
<tr>
|
|
70
|
-
<td>Bradesco</td>
|
|
71
|
-
<td>03, 06, 09, 19, 21, 22.</td>
|
|
72
|
-
<td>Esperando Contribuição</td>
|
|
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>
|
|
94
|
-
<tr>
|
|
95
|
-
<td>Santander</td>
|
|
96
|
-
<td>101, 102, 121.</td>
|
|
97
|
-
<td>Esperando Contribuição</td>
|
|
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>
|
|
109
|
-
</table>
|
|
110
|
-
|
|
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.**
|
|
112
|
-
|
|
113
|
-
## Homologação no Banco
|
|
114
|
-
|
|
115
|
-
Uma ótima forma de contribuir para a gem, é validar junto ao banco os boletos implementados acima.
|
|
116
|
-
|
|
117
|
-
## Usage
|
|
118
|
-
|
|
119
|
-
Você pode usar as próprias classes da gem, porém, **recomendo criar uma subclasse** para os bancos que você gostaria de desenvolver.
|
|
120
|
-
|
|
121
|
-
### Exemplo
|
|
63
|
+
### Validando o Boleto
|
|
64
|
+
|
|
65
|
+
Cada banco possui suas próprias validações. Sempre verifique se o boleto é válido antes de renderizar:
|
|
122
66
|
|
|
123
67
|
```ruby
|
|
124
|
-
|
|
68
|
+
if boleto.valid?
|
|
69
|
+
# Boleto válido, pode renderizar
|
|
70
|
+
else
|
|
71
|
+
boleto.errors.full_messages.each do |erro|
|
|
72
|
+
puts erro
|
|
73
|
+
end
|
|
125
74
|
end
|
|
75
|
+
```
|
|
76
|
+
|
|
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"
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Formatos de Saída
|
|
88
|
+
|
|
89
|
+
### PDF
|
|
90
|
+
|
|
91
|
+
Gera o boleto em formato PDF usando Prawn:
|
|
92
|
+
|
|
93
|
+
```ruby
|
|
94
|
+
boleto.to_pdf
|
|
95
|
+
# => String com o conteúdo binário do PDF
|
|
96
|
+
|
|
97
|
+
# Salvando em arquivo
|
|
98
|
+
File.binwrite('boleto.pdf', boleto.to_pdf)
|
|
99
|
+
```
|
|
100
|
+
|
|
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
|
+
```
|
|
109
|
+
|
|
110
|
+
### PNG (Código de Barras)
|
|
111
|
+
|
|
112
|
+
Gera apenas a imagem do código de barras:
|
|
113
|
+
|
|
114
|
+
```ruby
|
|
115
|
+
boleto.to_png
|
|
116
|
+
# => String com o conteúdo binário do PNG
|
|
117
|
+
|
|
118
|
+
# Com opções customizadas
|
|
119
|
+
boleto.to_png(height: 80, margin: 20)
|
|
120
|
+
|
|
121
|
+
# Salvando em arquivo
|
|
122
|
+
File.binwrite('codigo_barras.png', boleto.to_png)
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Customizando Templates HTML
|
|
126
|
+
|
|
127
|
+
O HTML é gerado usando templates ERB que podem ser customizados.
|
|
128
|
+
|
|
129
|
+
#### Usando um Caminho Customizado
|
|
130
|
+
|
|
131
|
+
```ruby
|
|
132
|
+
class MeuHtmlRenderer < BoletoBancario::Renderers::HtmlRenderer
|
|
133
|
+
self.template_path = '/caminho/para/meus/templates'
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
boleto = BoletoBancario::Itau.new(...)
|
|
137
|
+
renderer = MeuHtmlRenderer.new(boleto)
|
|
138
|
+
html = renderer.render
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
#### Estrutura dos Templates
|
|
142
|
+
|
|
143
|
+
Os templates padrão estão em `lib/boleto_bancario/templates/`:
|
|
144
|
+
|
|
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 |
|
|
155
|
+
|
|
156
|
+
#### Rails: Copiando Templates
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
rails generate boleto_bancario:views
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
Isso copia os templates para `app/views/boletos/`, onde você pode customizá-los.
|
|
163
|
+
|
|
164
|
+
#### Rails: Renderizando com Partials
|
|
165
|
+
|
|
166
|
+
O boleto suporta `to_partial_path` para integração com Rails:
|
|
167
|
+
|
|
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>
|
|
175
|
+
|
|
176
|
+
<%# Em qualquer view %>
|
|
177
|
+
<%= render @boleto %>
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
## Exemplos por Banco
|
|
181
|
+
|
|
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
|
|
126
212
|
|
|
127
|
-
|
|
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
|
|
128
230
|
end
|
|
129
231
|
|
|
130
|
-
|
|
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%'
|
|
131
256
|
end
|
|
132
257
|
|
|
133
|
-
|
|
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
|
|
134
273
|
end
|
|
135
274
|
```
|
|
136
275
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
* Agência
|
|
140
|
-
* Dígito da agência
|
|
141
|
-
* Conta Corrente
|
|
142
|
-
* Dígito da Conta Corrente
|
|
143
|
-
* Carteira
|
|
144
|
-
* Cedente
|
|
145
|
-
* Código do Cedente
|
|
146
|
-
* Documento do Cedente
|
|
147
|
-
* Endereço do Cedente
|
|
148
|
-
* Sacado
|
|
149
|
-
* Documento do Sacado
|
|
150
|
-
* Código da Moeda
|
|
151
|
-
* Data do documento
|
|
152
|
-
* Data do vencimento
|
|
153
|
-
* Número do documento
|
|
154
|
-
* Valor do documento (valor do boleto)
|
|
155
|
-
* Espécie
|
|
156
|
-
* Espécie do documento
|
|
157
|
-
|
|
158
|
-
### Criando os boletos / Validações
|
|
159
|
-
|
|
160
|
-
Agora você pode emitir um boleto, **usando a classe criada no exemplo acima**:
|
|
276
|
+
### Caixa Econômica Federal
|
|
161
277
|
|
|
162
278
|
```ruby
|
|
163
|
-
|
|
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
|
|
164
313
|
```
|
|
165
314
|
|
|
166
|
-
|
|
315
|
+
### Itaú
|
|
167
316
|
|
|
168
317
|
```ruby
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
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
|
|
182
368
|
end
|
|
183
369
|
```
|
|
184
370
|
|
|
185
|
-
|
|
186
|
-
Primeiramente, **antes de renderizar qualquer boleto você precisar verificar se esse o boleto é válido**.
|
|
371
|
+
### Santander
|
|
187
372
|
|
|
188
373
|
```ruby
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
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
|
|
193
407
|
end
|
|
194
408
|
```
|
|
195
409
|
|
|
196
|
-
###
|
|
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
|
+
```
|
|
197
451
|
|
|
198
|
-
|
|
452
|
+
### Sicredi
|
|
199
453
|
|
|
200
454
|
```ruby
|
|
201
|
-
|
|
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
|
|
202
472
|
|
|
203
|
-
|
|
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
|
+
```
|
|
204
491
|
|
|
205
|
-
|
|
492
|
+
### Nubank
|
|
206
493
|
|
|
207
|
-
|
|
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
|
|
208
510
|
|
|
209
|
-
|
|
511
|
+
boleto.codigo_banco_formatado # => "260-0"
|
|
512
|
+
boleto.nosso_numero # => "00012345678-9"
|
|
513
|
+
boleto.agencia_codigo_cedente # => "0001 / 1234567890-3"
|
|
514
|
+
```
|
|
210
515
|
|
|
211
|
-
|
|
516
|
+
### Inter
|
|
212
517
|
|
|
213
|
-
|
|
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
|
|
214
534
|
|
|
215
|
-
|
|
535
|
+
boleto.codigo_banco_formatado # => "077-9"
|
|
536
|
+
boleto.nosso_numero # => "00098765432-9"
|
|
537
|
+
boleto.agencia_codigo_cedente # => "0001 / 9876543210-3"
|
|
538
|
+
```
|
|
216
539
|
|
|
217
|
-
|
|
540
|
+
### C6 Bank
|
|
218
541
|
|
|
219
|
-
|
|
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"
|
|
220
562
|
```
|
|
221
563
|
|
|
222
|
-
##
|
|
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
|
|
223
581
|
|
|
224
|
-
|
|
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
|
+
```
|
|
225
591
|
|
|
226
|
-
|
|
227
|
-
**Seguindo a interface da classe BoletoBancario::Boleto** fica bem simples:
|
|
592
|
+
### Sobrescrevendo Comportamentos
|
|
228
593
|
|
|
229
594
|
```ruby
|
|
230
|
-
class
|
|
595
|
+
class MeuBoletoBradesco < BoletoBancario::Bradesco
|
|
596
|
+
# Customiza o código de barras do banco
|
|
231
597
|
def codigo_de_barras_do_banco
|
|
232
|
-
|
|
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
|
|
233
604
|
end
|
|
234
605
|
end
|
|
235
606
|
```
|
|
236
607
|
|
|
237
|
-
##
|
|
608
|
+
## Validação de CPF/CNPJ
|
|
609
|
+
|
|
610
|
+
A gem inclui utilitários para validação de documentos:
|
|
238
611
|
|
|
239
|
-
|
|
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
|
|
240
616
|
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
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
|
+
```
|
|
244
621
|
|
|
245
|
-
##
|
|
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:
|
|
246
674
|
|
|
247
|
-
|
|
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
|
+
```
|
|
248
724
|
|
|
249
|
-
|
|
250
|
-
Essa gem **apenas emite o boleto**, com todas as informações necessárias do boleto.
|
|
725
|
+
## Changelog
|
|
251
726
|
|
|
252
|
-
|
|
727
|
+
Veja o arquivo [Changelog.markdown](Changelog.markdown) para o histórico de alterações.
|
|
253
728
|
|
|
254
|
-
|
|
729
|
+
## Licença
|
|
255
730
|
|
|
256
|
-
|
|
257
|
-
* Fornecendo documentações mais atualizadas dos Bancos.
|
|
258
|
-
* Escrevendo novos formatos (PDF, PNG), e me avisando para divulgar no Readme.
|
|
259
|
-
* Refatorando código!!
|
|
260
|
-
* Fornecendo Feedback construtivo! (Sempre bem vindo!)
|
|
731
|
+
MIT License. Veja [LICENSE](LICENSE) para mais detalhes.
|