br_boleto 0.1.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +3 -0
- data/Gemfile.lock +3 -3
- data/README.markdown +196 -11
- data/Rakefile +5 -0
- data/br_boleto.gemspec +1 -1
- data/lib/br_boleto.rb +30 -12
- data/lib/br_boleto/{core/boleto.rb → boleto/base.rb} +83 -5
- data/lib/br_boleto/boleto/sicoob.rb +211 -0
- data/lib/br_boleto/calculos/modulo11_fator3197.rb +5 -5
- data/lib/br_boleto/helper/cpf_cnpj.rb +60 -0
- data/lib/br_boleto/helper/number.rb +15 -0
- data/lib/br_boleto/remessa/base.rb +89 -0
- data/lib/br_boleto/remessa/cnab240/base.rb +328 -0
- data/lib/br_boleto/remessa/cnab240/helper/header_arquivo.rb +186 -0
- data/lib/br_boleto/remessa/cnab240/helper/header_lote.rb +180 -0
- data/lib/br_boleto/remessa/cnab240/helper/segmento_p.rb +349 -0
- data/lib/br_boleto/remessa/cnab240/helper/segmento_q.rb +206 -0
- data/lib/br_boleto/remessa/cnab240/helper/segmento_r.rb +261 -0
- data/lib/br_boleto/remessa/cnab240/helper/segmento_s.rb +193 -0
- data/lib/br_boleto/remessa/cnab240/helper/trailer_arquivo.rb +88 -0
- data/lib/br_boleto/remessa/cnab240/helper/trailer_lote.rb +75 -0
- data/lib/br_boleto/remessa/cnab240/sicoob.rb +246 -0
- data/lib/br_boleto/remessa/lote.rb +52 -0
- data/lib/br_boleto/remessa/pagamento.rb +238 -0
- data/lib/br_boleto/string_methods.rb +21 -0
- data/lib/br_boleto/version.rb +2 -2
- data/test/br_boleto/{core/boleto_test.rb → boleto/base_test.rb} +107 -11
- data/test/br_boleto/{core → boleto}/sicoob_test.rb +60 -2
- data/test/br_boleto/remessa/base_test.rb +80 -0
- data/test/br_boleto/remessa/cnab240/base_test.rb +405 -0
- data/test/br_boleto/remessa/cnab240/helper/header_arquivo_test.rb +208 -0
- data/test/br_boleto/remessa/cnab240/helper/header_lote_test.rb +200 -0
- data/test/br_boleto/remessa/cnab240/helper/segmento_p_test.rb +390 -0
- data/test/br_boleto/remessa/cnab240/helper/segmento_q_test.rb +223 -0
- data/test/br_boleto/remessa/cnab240/helper/segmento_r_test.rb +260 -0
- data/test/br_boleto/remessa/cnab240/helper/segmento_s_test.rb +217 -0
- data/test/br_boleto/remessa/cnab240/helper/trailer_arquivo_test.rb +82 -0
- data/test/br_boleto/remessa/cnab240/helper/trailer_lote_test.rb +67 -0
- data/test/br_boleto/remessa/cnab240/sicoob_test.rb +347 -0
- data/test/br_boleto/remessa/lote_test.rb +49 -0
- data/test/br_boleto/remessa/pagamento_test.rb +339 -0
- data/test/factories/{boleto.rb → boleto/base.rb} +1 -1
- data/test/factories/{boleto_sicoob.rb → boleto/boleto_sicoob.rb} +1 -1
- data/test/factories/remessa/base.rb +13 -0
- data/test/factories/remessa/cnab240/base.rb +18 -0
- data/test/factories/remessa/cnab240/sicoob.rb +18 -0
- data/test/factories/remessa/lote.rb +7 -0
- data/test/factories/remessa/pagamento.rb +16 -0
- data/test/inheritance/boleto_test.rb +1 -1
- data/test/inheritance/sicoob_test.rb +1 -1
- metadata +65 -13
- data/lib/br_boleto/core/sicoob.rb +0 -169
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d16dbfe9183a80cf5104917582d4af59fe5aaf9e
|
4
|
+
data.tar.gz: 85abfe56bca98763364c99ba3e0e2eefc0c86f05
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c6e8f71c47f86caf28d2e6ea49794a748995603985714d15ccfebaa8e9986a39a16f83d4cd6bb750f62321fc93fd69cd4db4b74ac2408161c229f09bc5cf9163
|
7
|
+
data.tar.gz: 359f97d528bbb8b6689c78acfbc033d043aa18328d85dd2e05794a320be1c790e7246a1cb307614fad3958f88701e13ddb6ecefc305af34bbb16503161ef35fc
|
data/.travis.yml
ADDED
data/Gemfile.lock
CHANGED
data/README.markdown
CHANGED
@@ -1,28 +1,33 @@
|
|
1
|
-
# BrBoleto
|
1
|
+
# **BrBoleto**
|
2
2
|
|
3
3
|
Emissão de Boletos Bancários em Ruby.
|
4
4
|
|
5
|
+
[![Code Climate](https://codeclimate.com/github/Brunomm/br_boleto/badges/gpa.svg)](https://codeclimate.com/github/Brunomm/br_boleto)
|
6
|
+
[![Build Status](https://travis-ci.org/Brunomm/br_boleto.svg?branch=master)](https://travis-ci.org/Brunomm/br_boleto)
|
7
|
+
[![security](https://hakiri.io/github/Brunomm/br_boleto/master.svg)](https://hakiri.io/github/Brunomm/br_boleto/master)
|
8
|
+
|
5
9
|
## Versão 1.0.0
|
10
|
+
**O que essa gem faz?**
|
6
11
|
|
7
|
-
|
12
|
+
1. Boleto bancário para os bancos:
|
13
|
+
- Sicoob (apenas os cálculos para o boleto, sem a interface)
|
14
|
+
2. Arquivo de remessa para os Bancos:
|
15
|
+
- Sicoob
|
8
16
|
|
9
17
|
## Alternativas
|
10
18
|
|
11
19
|
Essa biblioteca é baseada em outras **ótimas** bibliotecas.
|
12
20
|
**Recomendo analisar muito bem cada solução**:
|
13
21
|
|
14
|
-
* Stella Caelum [http://stella.caelum.com.br/](http://stella.caelum.com.br/)
|
15
|
-
* Novo Gateway de Pagamentos da Locaweb [http://www.locaweb.com.br/produtos/gateway-pagamento.html](http://www.locaweb.com.br/produtos/gateway-pagamento.html)
|
16
22
|
* Brcobranca [https://github.com/kivanio/brcobranca](https://github.com/kivanio/brcobranca)
|
17
|
-
* Boleto Php [http://boletophp.com.br/](http://boletophp.com.br/)
|
18
23
|
* Gem de Boleto Bancário [https://github.com/tomas-stefano/boleto_bancario](https://github.com/tomas-stefano/boleto_bancario)
|
19
24
|
|
20
25
|
## Instalação
|
21
|
-
**
|
26
|
+
**Manualmente**
|
22
27
|
|
23
28
|
gem install br_boleto
|
24
29
|
|
25
|
-
**
|
30
|
+
**Gemfile**
|
26
31
|
|
27
32
|
gem 'br_boleto'
|
28
33
|
|
@@ -37,27 +42,48 @@ Seguimos as documentações descritas abaixo:
|
|
37
42
|
|
38
43
|
Para todos os bancos e carteiras implementadas, **seguimos as documentações** que estão dentro do repositório:
|
39
44
|
|
45
|
+
**Boletos**
|
40
46
|
<table>
|
41
47
|
<tr>
|
42
48
|
<th>Nome do Banco</th>
|
43
49
|
<th>Carteiras Suportadas</th>
|
44
50
|
<th>Testada/Homologada no banco</th>
|
51
|
+
<th>Autor </th>
|
45
52
|
</tr>
|
46
53
|
<tr>
|
47
54
|
<td>Sicoob</td>
|
48
55
|
<td>1, 3.</td>
|
49
|
-
<td>
|
56
|
+
<td>Homologado dia 03/08/2015</td>
|
57
|
+
<td>Bruno M. Mergen</td>
|
58
|
+
</tr>
|
59
|
+
</table>
|
60
|
+
|
61
|
+
|
62
|
+
----------
|
63
|
+
|
64
|
+
|
65
|
+
**Arquivos de remessa**
|
66
|
+
<table>
|
67
|
+
<tr>
|
68
|
+
<th>Nome do Banco</th>
|
69
|
+
<th>Testada/Homologada no banco</th>
|
70
|
+
<th>Autor </th>
|
71
|
+
</tr>
|
72
|
+
<tr>
|
73
|
+
<td>Sicoob</td>
|
74
|
+
<td>Homologado dia 07/08/2015</td>
|
75
|
+
<td>Bruno M. Mergen</td>
|
50
76
|
</tr>
|
51
77
|
</table>
|
52
78
|
|
53
|
-
##
|
79
|
+
## Como usar
|
54
80
|
|
55
81
|
Você pode usar as próprias classes da gem, porém, **recomendo criar uma subclasse** para os bancos que você gostaria de desenvolver.
|
56
82
|
|
57
83
|
### Exemplo
|
58
84
|
|
59
85
|
```ruby
|
60
|
-
class BoletoSicoob < BrBoleto::Sicoob
|
86
|
+
class BoletoSicoob < BrBoleto::Boleto::Sicoob
|
61
87
|
end
|
62
88
|
|
63
89
|
```
|
@@ -132,12 +158,171 @@ Por exemplo, imagine que você quer sobrescrever a forma como é tratada a segun
|
|
132
158
|
**Seguindo a interface da classe BrBoleto::Boleto** fica bem simples:
|
133
159
|
|
134
160
|
```ruby
|
135
|
-
class BoletoSicoob < BrBoleto::Sicoob
|
161
|
+
class BoletoSicoob < BrBoleto::Boleto::Sicoob
|
136
162
|
def codigo_de_barras_do_banco
|
137
163
|
# Sua implementação ...
|
138
164
|
end
|
139
165
|
end
|
140
166
|
```
|
167
|
+
#**Arquivo de remessa**
|
168
|
+
|
169
|
+
##**CNAB 240**
|
170
|
+
Um arquivo de remessa é composto de UM ou VÁRIOS lotes (class BrBoleto::Remessa::Lote).
|
171
|
+
Estes lotes são compostos de UM ou VÁRIOS pagamentos (class BrBoleto::Remessa::Pagamento).
|
172
|
+
|
173
|
+
Por exemplo, você gerou 2 boletos, e precisa criar um arquivo de remessa para os mesmos. Deve ser criado(instanciado) 2 pagamentos(BrBoleto::Remessa::Pagamento) onde deverão ter os dados requeridos do pagamento de cada boleto. (pagamento 1 com dados do boleto 1 e pagamento 2 com os dados do boleto 2).
|
174
|
+
Com isso, deve-se instanciar um lote passando os dois pagamentos instanciados. Esse lote você adiciona aos lotes da remessa e chama o método `dados_do_arquivo` do objeto de Remessa do banco referente.
|
175
|
+
|
176
|
+
Exemplo:
|
177
|
+
```ruby
|
178
|
+
boleto_1 = BrBoleto::Boleto::Sicoob.new({
|
179
|
+
agencia: 3069,
|
180
|
+
codigo_cedente: 6532,
|
181
|
+
numero_documento: 10001,
|
182
|
+
carteira: 1,
|
183
|
+
valor_documento: 100.78,
|
184
|
+
data_vencimento: Date.tomorrow,
|
185
|
+
conta_corrente: '5679',
|
186
|
+
cedente: 'Cedente 1',
|
187
|
+
documento_cedente:'12345678901',
|
188
|
+
sacado: 'Sacado',
|
189
|
+
documento_sacado: '725.275.005-10',
|
190
|
+
endereco_sacado: 'Rua teste, 23045',
|
191
|
+
instrucoes1: 'Lembrar de algo 1',
|
192
|
+
instrucoes2: 'Lembrar de algo 2',
|
193
|
+
instrucoes3: 'Lembrar de algo 3',
|
194
|
+
instrucoes4: 'Lembrar de algo 4',
|
195
|
+
instrucoes5: 'Lembrar de algo 5',
|
196
|
+
instrucoes6: 'Lembrar de algo 6'
|
197
|
+
})
|
198
|
+
|
199
|
+
boleto_2 = BrBoleto::Boleto::Sicoob.new({
|
200
|
+
agencia: 3069,
|
201
|
+
codigo_cedente: 6532,
|
202
|
+
numero_documento: 10002,
|
203
|
+
carteira: 1,
|
204
|
+
valor_documento: 200.78,
|
205
|
+
data_vencimento: Date.tomorrow,
|
206
|
+
conta_corrente: '5679',
|
207
|
+
cedente: 'Cedente 2',
|
208
|
+
documento_cedente:'12345678901',
|
209
|
+
sacado: 'Sacado',
|
210
|
+
documento_sacado: '725.275.005-10',
|
211
|
+
endereco_sacado: 'Rua teste, 23045',
|
212
|
+
instrucoes1: 'Lembrar de algo 1',
|
213
|
+
instrucoes2: 'Lembrar de algo 2',
|
214
|
+
instrucoes3: 'Lembrar de algo 3',
|
215
|
+
instrucoes4: 'Lembrar de algo 4',
|
216
|
+
instrucoes5: 'Lembrar de algo 5',
|
217
|
+
instrucoes6: 'Lembrar de algo 6'
|
218
|
+
})
|
219
|
+
|
220
|
+
|
221
|
+
pagamento_1 = BrBoleto::Remessa::Pagamento.new({
|
222
|
+
nosso_numero: boleto_1.nosso_numero,
|
223
|
+
data_vencimento: boleto_1.data_vencimento,
|
224
|
+
valor_documento: boleto_1.valor_documento,
|
225
|
+
documento_sacado: boleto_1.documento_sacado,
|
226
|
+
nome_sacado: boleto_1.sacado,
|
227
|
+
endereco_sacado: "R. TESTE DO SACADO",
|
228
|
+
cep_sacado: "89888000",
|
229
|
+
cidade_sacado: "PIRÁPORA",
|
230
|
+
uf_sacado: "SC",
|
231
|
+
bairro_sacado: "Bairro"
|
232
|
+
})
|
233
|
+
|
234
|
+
pagamento_2 = BrBoleto::Remessa::Pagamento.new({
|
235
|
+
nosso_numero: boleto_2.nosso_numero,
|
236
|
+
data_vencimento: boleto_2.data_vencimento,
|
237
|
+
valor_documento: boleto_2.valor_documento,
|
238
|
+
documento_sacado: boleto_2.documento_sacado,
|
239
|
+
nome_sacado: boleto_2.sacado,
|
240
|
+
endereco_sacado: "R. TESTE DO SACADO",
|
241
|
+
cep_sacado: "89888000",
|
242
|
+
cidade_sacado: "PIRÁPORA",
|
243
|
+
uf_sacado: "SC",
|
244
|
+
bairro_sacado: "Bairro"
|
245
|
+
})
|
246
|
+
|
247
|
+
|
248
|
+
lote = BrBoleto::Remessa::Lote.new(pagamentos: [pagamento_1, pagamento_2])
|
249
|
+
|
250
|
+
remessa = BrBoleto::Remessa::Cnab240::Sicoob.new({
|
251
|
+
lotes: lote,
|
252
|
+
nome_empresa: "Sacado",
|
253
|
+
agencia: "3069",
|
254
|
+
conta_corrente: "5679", # Sem DV
|
255
|
+
digito_conta: "5",
|
256
|
+
carteira: "1",
|
257
|
+
sequencial_remessa: 1,
|
258
|
+
documento_cedente: '12345678901',
|
259
|
+
convenio: '1',
|
260
|
+
emissao_boleto: '2',
|
261
|
+
distribuicao_boleto: '2',
|
262
|
+
especie_titulo: '02'
|
263
|
+
})
|
264
|
+
|
265
|
+
|
266
|
+
remessa.dados_do_arquivo
|
267
|
+
```
|
268
|
+
Com isso irá gerar uma string com os dados para o arquivo de remessa.
|
269
|
+
Ele irá ficar no seguinte formato
|
270
|
+
```
|
271
|
+
HEADER_ARQUIVO
|
272
|
+
HEADER_LOTE
|
273
|
+
SEGMENTO_P # Do pagamento 1
|
274
|
+
SEGMENTO_Q # Do pagamento 1
|
275
|
+
SEGMENTO_R # Do pagamento 1
|
276
|
+
SEGMENTO_S # Do pagamento 1
|
277
|
+
SEGMENTO_P # Do pagamento 2
|
278
|
+
SEGMENTO_Q # Do pagamento 2
|
279
|
+
SEGMENTO_R # Do pagamento 2
|
280
|
+
SEGMENTO_S # Do pagamento 2
|
281
|
+
TRAILER_LOTE
|
282
|
+
TRAILER_ARQUIVO
|
283
|
+
```
|
284
|
+
|
285
|
+
Está nesse formato pois somente assim consegui homologar junto ao banco.
|
286
|
+
|
287
|
+
Mas se você deseja colocar o arquivo no formato:
|
288
|
+
```
|
289
|
+
HEADER_ARQUIVO
|
290
|
+
HEADER_LOTE # Do pagamento 1
|
291
|
+
SEGMENTO_P
|
292
|
+
SEGMENTO_Q
|
293
|
+
SEGMENTO_R
|
294
|
+
SEGMENTO_S
|
295
|
+
TRAILER_LOTE
|
296
|
+
HEADER_LOTE # Do pagamento 2
|
297
|
+
SEGMENTO_P
|
298
|
+
SEGMENTO_Q
|
299
|
+
SEGMENTO_R
|
300
|
+
SEGMENTO_S
|
301
|
+
TRAILER_LOTE
|
302
|
+
TRAILER_ARQUIVO
|
303
|
+
```
|
304
|
+
basta criar um lote para cada pagamento. Exemplo:
|
305
|
+
|
306
|
+
```ruby
|
307
|
+
lotes = []
|
308
|
+
lotes << BrBoleto::Remessa::Lote.new(pagamentos: pagamento_1)
|
309
|
+
lotes << BrBoleto::Remessa::Lote.new(pagamentos: pagamento_2)
|
310
|
+
|
311
|
+
remessa = BrBoleto::Remessa::Cnab240::Sicoob.new({
|
312
|
+
lotes: lotes,
|
313
|
+
nome_empresa: "Sacado",
|
314
|
+
agencia: "3069",
|
315
|
+
conta_corrente: "5679", # Sem DV
|
316
|
+
digito_conta: "5",
|
317
|
+
carteira: "1",
|
318
|
+
sequencial_remessa: 1,
|
319
|
+
documento_cedente: '12345678901',
|
320
|
+
convenio: '1',
|
321
|
+
emissao_boleto: '2',
|
322
|
+
distribuicao_boleto: '2',
|
323
|
+
especie_titulo: '02'
|
324
|
+
})
|
325
|
+
```
|
141
326
|
|
142
327
|
## Contribuições
|
143
328
|
|
data/Rakefile
CHANGED
data/br_boleto.gemspec
CHANGED
@@ -10,8 +10,8 @@ Gem::Specification.new do |gem|
|
|
10
10
|
gem.license = "BSD"
|
11
11
|
|
12
12
|
gem.files = `git ls-files`.split($\).reject { |f| ['.pdf','.xls'].include?(File.extname(f)) }
|
13
|
+
gem.test_files = `git ls-files -- test/**/*`.split("\n")
|
13
14
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
14
|
-
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
15
15
|
gem.name = "br_boleto"
|
16
16
|
gem.require_paths = ["lib"]
|
17
17
|
gem.version = BrBoleto::Version::CURRENT
|
data/lib/br_boleto.rb
CHANGED
@@ -6,6 +6,10 @@ require 'active_support/core_ext/enumerable'
|
|
6
6
|
require 'active_support/core_ext/object'
|
7
7
|
require 'active_support/core_ext/string'
|
8
8
|
|
9
|
+
require 'br_boleto/string_methods'
|
10
|
+
|
11
|
+
|
12
|
+
|
9
13
|
# Copyright (C) 2015 Bruno M. Mergen <http://duobr.com.br>
|
10
14
|
#
|
11
15
|
# @author Bruno Mucelini Mergen <brunomergen@gmail.com>
|
@@ -47,22 +51,34 @@ module BrBoleto
|
|
47
51
|
# dos formatos (pdf, html, etc) e internacionalização dos boletos (caso
|
48
52
|
# você precise mudar os nomes dos campos nos boletos)
|
49
53
|
#
|
50
|
-
module
|
54
|
+
module Boleto
|
51
55
|
extend ActiveSupport::Autoload
|
52
56
|
|
53
|
-
autoload :
|
54
|
-
autoload :BancoBrasil
|
55
|
-
autoload :Banrisul
|
56
|
-
autoload :Bradesco
|
57
|
-
autoload :Caixa
|
58
|
-
autoload :Hsbc
|
59
|
-
autoload :Itau
|
60
|
-
autoload :Real
|
61
|
-
autoload :Santander
|
62
|
-
autoload :Sicredi
|
57
|
+
autoload :Base
|
63
58
|
autoload :Sicoob
|
64
59
|
end
|
65
60
|
|
61
|
+
|
62
|
+
module Remessa
|
63
|
+
extend ActiveSupport::Autoload
|
64
|
+
autoload :Base
|
65
|
+
autoload :Lote
|
66
|
+
autoload :Pagamento
|
67
|
+
|
68
|
+
module Cnab240
|
69
|
+
extend ActiveSupport::Autoload
|
70
|
+
autoload :Base
|
71
|
+
autoload :Sicoob
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
module Helper
|
76
|
+
extend ActiveSupport::Autoload
|
77
|
+
|
78
|
+
autoload :CpfCnpj
|
79
|
+
autoload :Number
|
80
|
+
end
|
81
|
+
|
66
82
|
# Módulo que possui classes que realizam os cálculos dos campos que serão mostrados nos boletos.
|
67
83
|
#
|
68
84
|
module Calculos
|
@@ -83,5 +99,7 @@ module BrBoleto
|
|
83
99
|
autoload :Digitos
|
84
100
|
end
|
85
101
|
|
86
|
-
include
|
102
|
+
include Helper
|
103
|
+
include Boleto
|
104
|
+
include Remessa
|
87
105
|
end
|
@@ -1,10 +1,10 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
module BrBoleto
|
3
|
-
module
|
3
|
+
module Boleto
|
4
4
|
# @abstract Métodos { #codigo_banco, #digito_codigo_banco, #agencia_codigo_cedente, #nosso_numero, #codigo_de_barras_do_banco}
|
5
5
|
# Métodos para serem escritos nas subclasses (exitem outros opcionais, conforme visto nessa documentação).
|
6
6
|
#
|
7
|
-
class
|
7
|
+
class Base
|
8
8
|
include BrBoleto::Calculos
|
9
9
|
|
10
10
|
# Seguindo a interface do Active Model para:
|
@@ -224,16 +224,16 @@ module BrBoleto
|
|
224
224
|
#
|
225
225
|
# O recomendado é usar os boletos herdando de seu respectivo banco. Por exemplo:
|
226
226
|
#
|
227
|
-
# class
|
227
|
+
# class Sicoob < BrBoleto::Sicoob
|
228
228
|
# end
|
229
229
|
#
|
230
230
|
# Agora você pode emitir um boleto usando a classe criada acima:
|
231
231
|
#
|
232
|
-
#
|
232
|
+
# Sicoob.new(conta_corrente: '89755', agencia: '0097', :carteira => '195')
|
233
233
|
#
|
234
234
|
# Você pode usar blocos se quiser:
|
235
235
|
#
|
236
|
-
#
|
236
|
+
# Sicoob.new do |boleto|
|
237
237
|
# boleto.conta_corrente = '89755'
|
238
238
|
# boleto.agencia = '0097'
|
239
239
|
# boleto.carteira = '198'
|
@@ -277,6 +277,18 @@ module BrBoleto
|
|
277
277
|
}
|
278
278
|
end
|
279
279
|
|
280
|
+
# Tipo de cobrança
|
281
|
+
# Ex: :com_registro, :sem_registro, :garantia_caucionada
|
282
|
+
# A implementação para esse valor deve ser implementada para cada banco,
|
283
|
+
# pois cada banco tem uma maneira diferente para saber o tipo de cobrança.
|
284
|
+
#
|
285
|
+
# Obs: O VALOR DESSE METODO NÃO INFLUÊNCIA NA GERAÇÃO DO BOLETO
|
286
|
+
# É APENAS PARA QUESTÃO DE INFORMAÇÃO CASO PRECISE PARA OUTRAS COISAS, POR EXEMPLO:
|
287
|
+
# É UTILIZADO NOS PAGAMENTOS DAS REMESSAS, MAIS ESPECIFICAMENTE NO COMPLEMENTO TRAILER
|
288
|
+
# DO LOTE PARA O BANCO SICOOB NO CNAB 240.
|
289
|
+
def tipo_cobranca
|
290
|
+
end
|
291
|
+
|
280
292
|
# Código do Banco.
|
281
293
|
# <b>Esse campo é específico para cada banco</b>.
|
282
294
|
#
|
@@ -553,6 +565,72 @@ module BrBoleto
|
|
553
565
|
def data_vencimento_deve_ser_uma_data
|
554
566
|
errors.add(:data_vencimento, :invalid) unless data_vencimento.kind_of?(Date)
|
555
567
|
end
|
568
|
+
|
569
|
+
|
570
|
+
################ FORMATAÇÃO PARA CPF OU CNPJ ################
|
571
|
+
# tanto o documento do sacado quandto do cedente possui 3 tipos de formatação
|
572
|
+
# EX:
|
573
|
+
# documento_sacado = '12345678901'
|
574
|
+
# atributo + '_formatado':
|
575
|
+
# documento_sacado_formatado = '123.456.789-01'
|
576
|
+
# atributo + '_formatado_com_label':
|
577
|
+
# documento_sacado_formatado_com_label = 'CPF 123.456.789-01'
|
578
|
+
#
|
579
|
+
# OBS: O documento_cedente e documento_sacado SEMPRE irão retornar o valor sem a formatação
|
580
|
+
# mesmo que seja setado
|
581
|
+
##############################################################
|
582
|
+
|
583
|
+
# Retorna o documento do sacado com tamanho 0, 11 ou 14 caracteres
|
584
|
+
# Sempre retorna o valor sem a formatação
|
585
|
+
#
|
586
|
+
# @return String
|
587
|
+
#
|
588
|
+
def documento_sacado
|
589
|
+
return "" unless @documento_sacado.present?
|
590
|
+
BrBoleto::Helper::CpfCnpj.new(@documento_sacado).sem_formatacao
|
591
|
+
end
|
592
|
+
|
593
|
+
# Retorna o documento do sacado formatado
|
594
|
+
#
|
595
|
+
# @return String
|
596
|
+
#
|
597
|
+
def documento_sacado_formatado
|
598
|
+
BrBoleto::Helper::CpfCnpj.new(documento_sacado).com_formatacao
|
599
|
+
end
|
600
|
+
|
601
|
+
# Retorna o documento do sacado formatado com label de CNPJ ou CPF
|
602
|
+
#
|
603
|
+
# @return String
|
604
|
+
#
|
605
|
+
def documento_sacado_formatado_com_label
|
606
|
+
BrBoleto::Helper::CpfCnpj.new(documento_sacado).formatado_com_label
|
607
|
+
end
|
608
|
+
|
609
|
+
# Retorna o documento do cedente com tamanho 0, 11 ou 14 caracteres
|
610
|
+
# Sempre retorna o valor sem a formatação
|
611
|
+
#
|
612
|
+
# @return String
|
613
|
+
#
|
614
|
+
def documento_cedente
|
615
|
+
return "" unless @documento_cedente.present?
|
616
|
+
BrBoleto::Helper::CpfCnpj.new(@documento_cedente).sem_formatacao
|
617
|
+
end
|
618
|
+
|
619
|
+
# Retorna o documento do cedente formatado
|
620
|
+
#
|
621
|
+
# @return String
|
622
|
+
#
|
623
|
+
def documento_cedente_formatado
|
624
|
+
BrBoleto::Helper::CpfCnpj.new(documento_cedente).com_formatacao
|
625
|
+
end
|
626
|
+
|
627
|
+
# Retorna o documento do cedente formatado com label de CNPJ ou CPF
|
628
|
+
#
|
629
|
+
# @return String
|
630
|
+
#
|
631
|
+
def documento_cedente_formatado_com_label
|
632
|
+
BrBoleto::Helper::CpfCnpj.new(documento_cedente).formatado_com_label
|
633
|
+
end
|
556
634
|
end
|
557
635
|
end
|
558
636
|
end
|