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.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +3 -0
  3. data/Gemfile.lock +3 -3
  4. data/README.markdown +196 -11
  5. data/Rakefile +5 -0
  6. data/br_boleto.gemspec +1 -1
  7. data/lib/br_boleto.rb +30 -12
  8. data/lib/br_boleto/{core/boleto.rb → boleto/base.rb} +83 -5
  9. data/lib/br_boleto/boleto/sicoob.rb +211 -0
  10. data/lib/br_boleto/calculos/modulo11_fator3197.rb +5 -5
  11. data/lib/br_boleto/helper/cpf_cnpj.rb +60 -0
  12. data/lib/br_boleto/helper/number.rb +15 -0
  13. data/lib/br_boleto/remessa/base.rb +89 -0
  14. data/lib/br_boleto/remessa/cnab240/base.rb +328 -0
  15. data/lib/br_boleto/remessa/cnab240/helper/header_arquivo.rb +186 -0
  16. data/lib/br_boleto/remessa/cnab240/helper/header_lote.rb +180 -0
  17. data/lib/br_boleto/remessa/cnab240/helper/segmento_p.rb +349 -0
  18. data/lib/br_boleto/remessa/cnab240/helper/segmento_q.rb +206 -0
  19. data/lib/br_boleto/remessa/cnab240/helper/segmento_r.rb +261 -0
  20. data/lib/br_boleto/remessa/cnab240/helper/segmento_s.rb +193 -0
  21. data/lib/br_boleto/remessa/cnab240/helper/trailer_arquivo.rb +88 -0
  22. data/lib/br_boleto/remessa/cnab240/helper/trailer_lote.rb +75 -0
  23. data/lib/br_boleto/remessa/cnab240/sicoob.rb +246 -0
  24. data/lib/br_boleto/remessa/lote.rb +52 -0
  25. data/lib/br_boleto/remessa/pagamento.rb +238 -0
  26. data/lib/br_boleto/string_methods.rb +21 -0
  27. data/lib/br_boleto/version.rb +2 -2
  28. data/test/br_boleto/{core/boleto_test.rb → boleto/base_test.rb} +107 -11
  29. data/test/br_boleto/{core → boleto}/sicoob_test.rb +60 -2
  30. data/test/br_boleto/remessa/base_test.rb +80 -0
  31. data/test/br_boleto/remessa/cnab240/base_test.rb +405 -0
  32. data/test/br_boleto/remessa/cnab240/helper/header_arquivo_test.rb +208 -0
  33. data/test/br_boleto/remessa/cnab240/helper/header_lote_test.rb +200 -0
  34. data/test/br_boleto/remessa/cnab240/helper/segmento_p_test.rb +390 -0
  35. data/test/br_boleto/remessa/cnab240/helper/segmento_q_test.rb +223 -0
  36. data/test/br_boleto/remessa/cnab240/helper/segmento_r_test.rb +260 -0
  37. data/test/br_boleto/remessa/cnab240/helper/segmento_s_test.rb +217 -0
  38. data/test/br_boleto/remessa/cnab240/helper/trailer_arquivo_test.rb +82 -0
  39. data/test/br_boleto/remessa/cnab240/helper/trailer_lote_test.rb +67 -0
  40. data/test/br_boleto/remessa/cnab240/sicoob_test.rb +347 -0
  41. data/test/br_boleto/remessa/lote_test.rb +49 -0
  42. data/test/br_boleto/remessa/pagamento_test.rb +339 -0
  43. data/test/factories/{boleto.rb → boleto/base.rb} +1 -1
  44. data/test/factories/{boleto_sicoob.rb → boleto/boleto_sicoob.rb} +1 -1
  45. data/test/factories/remessa/base.rb +13 -0
  46. data/test/factories/remessa/cnab240/base.rb +18 -0
  47. data/test/factories/remessa/cnab240/sicoob.rb +18 -0
  48. data/test/factories/remessa/lote.rb +7 -0
  49. data/test/factories/remessa/pagamento.rb +16 -0
  50. data/test/inheritance/boleto_test.rb +1 -1
  51. data/test/inheritance/sicoob_test.rb +1 -1
  52. metadata +65 -13
  53. data/lib/br_boleto/core/sicoob.rb +0 -169
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7779abe6dc0c653dd1e82299a4e9c89d2007e7c8
4
- data.tar.gz: 95d6fe53fe8ffa6c007e682130176450df534c9b
3
+ metadata.gz: d16dbfe9183a80cf5104917582d4af59fe5aaf9e
4
+ data.tar.gz: 85abfe56bca98763364c99ba3e0e2eefc0c86f05
5
5
  SHA512:
6
- metadata.gz: 035233e8e9c63da0579d77974df98b43cf9535bea8b184ff9ec94bcdfa865093bdffb3cbb766dd9b93a984fad0997e6c8da7fec02c3fb0afaf89eec915503bff
7
- data.tar.gz: b38d7006eb7451b0a765e5d64d03466d33b4d484e12937aab3809a8a683531a0c3112c89bc5f69b9e2968430470885f48a62c0a75211239c0a4b041d16330004
6
+ metadata.gz: c6e8f71c47f86caf28d2e6ea49794a748995603985714d15ccfebaa8e9986a39a16f83d4cd6bb750f62321fc93fd69cd4db4b74ac2408161c229f09bc5cf9163
7
+ data.tar.gz: 359f97d528bbb8b6689c78acfbc033d043aa18328d85dd2e05794a320be1c790e7246a1cb307614fad3958f88701e13ddb6ecefc305af34bbb16503161ef35fc
@@ -0,0 +1,3 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.2.2
@@ -2,9 +2,9 @@ PATH
2
2
  remote: .
3
3
  specs:
4
4
  br_boleto (0.1.0)
5
- activemodel (>= 4.1)
6
- activesupport (>= 4.1)
7
- rake
5
+ activemodel (~> 4.2)
6
+ activesupport (~> 4.2)
7
+ rake (>= 0.8.7)
8
8
 
9
9
  GEM
10
10
  remote: http://rubygems.org/
@@ -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
- Por enquanto esta gem apenas faz os cálculos para o banco sicoob.
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
- **Manual**
26
+ **Manualmente**
22
27
 
23
28
  gem install br_boleto
24
29
 
25
- **Instalação via Gemfile**
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>Emm andamento...</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
- ## Usage
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
@@ -4,5 +4,10 @@ Rake::TestTask.new do |task|
4
4
  task.libs << %w(test lib)
5
5
  task.pattern = 'test/**/*_test.rb'
6
6
  end
7
+
8
+ desc "Open an irb session preloaded with this library"
9
+ task :console do
10
+ sh "irb -rubygems -I lib -r br_boleto.rb"
11
+ end
7
12
 
8
13
  task :default => :test
@@ -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
@@ -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 Core
54
+ module Boleto
51
55
  extend ActiveSupport::Autoload
52
56
 
53
- autoload :Boleto
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 Core
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 Core
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 Boleto
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 Itau < BrBoleto::Itau
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
- # Itau.new(conta_corrente: '89755', agencia: '0097', :carteira => '195')
232
+ # Sicoob.new(conta_corrente: '89755', agencia: '0097', :carteira => '195')
233
233
  #
234
234
  # Você pode usar blocos se quiser:
235
235
  #
236
- # Itau.new do |boleto|
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