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.
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