br_boleto 0.1.0 → 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 +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
|
+
[](https://codeclimate.com/github/Brunomm/br_boleto)
|
6
|
+
[](https://travis-ci.org/Brunomm/br_boleto)
|
7
|
+
[](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
|