Class: BoletoBancario::Core::Bradesco
- Defined in:
- lib/boleto_bancario/core/bradesco.rb
Overview
Implementação de emissão de boleto bancário pelo Bradesco.
Documentação Implementada
A documentação na qual essa implementação foi baseada está localizada na pasta ‘documentacoes_dos_boletos/bradesco’ dentro dessa biblioteca.
Contrato das classes de emissão de boletos
Para ver o “contrato” da Emissão de Boletos (geração de código de barras, linha digitável, etc) veja a classe BoletoBancario::Core::Boleto.
Carteiras suportadas
Segue abaixo as carteiras suportadas do bradesco seguindo a documentação:
_________________________________________________________________________
| Carteira | Descrição | Testada/Homologada no banco |
| 03 | Sem registro | Esperando Contribuição |
| 06 | Sem registro | Esperando Contribuição |
| 09 | Com registro | Esperando Contribuição |
| 19 | Com registro | Esperando Contribuição |
| 21 | Cobrança Interna com registro | Esperando Contribuição |
| 22 | Cobrança Interna sem registro | Esperando Contribuição |
--------------------------------------------------------------------------
OBS.: Seja um contribuidor dessa gem. Contribua para homologar os boletos e as devidas carteiras junto ao banco Bradesco.
Exemplos
O recomendado é criar uma subclasse de BoletoBancario::Bradesco
class Bradesco < BoletoBancario::Bradesco
end
E a partir daí usar a sua classe para emitir o boleto:
Bradesco.new do |boleto|
boleto.conta_corrente = '89755'
boleto.agencia = '0097'
boleto.carteira = '03'
boleto.numero_documento = '12345678'
boleto.codigo_cedente = '909014'
end
Validações
A classe Bradesco possui suas próprias validações. Primeiramente, antes de renderizar qualquer boleto você precisar verificar se esse boleto é válido:
@bradesco = Bradesco.new
if @bradesco.valid?
# render @bradesco
else
# ...
end
Se você quiser sobrescrever alguma validação dessa classe a gem de boleto bancário possui alguns modos de fazer isso.
Sobrescrevendo validações
Caso você precise mudar as validações, você pode sobrescrever alguns métodos que possuem “Magic numbers”. Foi colocado dessa forma, já que os bancos mudam bastante esse tipo de validação. Por exemplo, atualmente a conta corrente é validado com ‘5’ como máximo de tamanho. Caso você queira que valide como 6, mude conforme abaixo:
class Bradesco < BoletoBancario::Bradesco
def self.tamanho_maximo_conta_corrente
6
end
end
Obs.: Mudar as regras de validação podem influenciar na emissão do boleto em si. Você precisará analisar o efeito no #codigo_de_barras, #nosso_numero e na #linha_digitável (ambos podem ser sobreescritos também).
Caso exista algum cenário de sobrescrita de validação contate o dono dessa gem pelo github e conte um pouco mais sobre esses cenários.
Instance Attribute Summary
Attributes inherited from Boleto
#aceite, #cedente, #codigo_cedente, #codigo_moeda, #data_documento, #data_vencimento, #documento_cedente, #documento_sacado, #endereco_cedente, #endereco_sacado, #especie, #especie_documento, #instrucoes1, #instrucoes2, #instrucoes3, #instrucoes4, #instrucoes5, #instrucoes6, #local_pagamento, #logo, #sacado, #valor_documento
Class Method Summary collapse
-
.carteiras_suportadas ⇒ Array
Carteiras suportadas..
-
.tamanho_maximo_agencia ⇒ Fixnum
Tamanho máximo de uma agência no Banco Bradesco.
-
.tamanho_maximo_conta_corrente ⇒ Fixnum
Tamanho máximo de uma conta corrente no Banco Bradesco.
-
.tamanho_maximo_numero_documento ⇒ Fixnum
Tamanho máximo do número do documento emitido no Boleto.
Instance Method Summary collapse
-
#agencia ⇒ String
4 caracteres.
-
#agencia_codigo_cedente ⇒ String
Campo preenchido com:.
-
#carteira ⇒ String
2 caracteres.
-
#carteira_formatada ⇒ Object
Número da Carteira de Cobrança, que a empresa opera no Banco.
-
#cobranca_interna_formatada ⇒ String
private
Retorna a mensagem que devera aparecer no campo carteira para cobranca interna.
-
#codigo_banco ⇒ String
Código do Banco descrito na documentação.
-
#codigo_de_barras_do_banco ⇒ Object
Código de barras do banco.
-
#conta_corrente ⇒ String
7 caracteres.
-
#digito_agencia ⇒ String
Dígito do código da agência.
-
#digito_codigo_banco ⇒ String
Dígito do código do banco.
-
#digito_conta_corrente ⇒ String
Dígito da conta corrente.
-
#digito_nosso_numero ⇒ String
Para o cálculo do dígito, será necessário acrescentar o número da carteira à esquerda antes do Nosso Número (número do documento), e aplicar o módulo 11, com fatores de 2 a 7.
-
#nosso_numero ⇒ Object
Nosso Número descrito na documentação (Pag. 53).
-
#numero_documento ⇒ String
11 caracteres.
Methods inherited from Boleto
#aceite_formatado, #codigo_banco_formatado, #codigo_de_barras, #codigo_de_barras_padrao, #data_vencimento_deve_ser_uma_data, #default_options, #deve_validar_agencia?, #deve_validar_carteira?, #deve_validar_codigo_cedente?, #deve_validar_conta_corrente?, #deve_validar_numero_documento?, #digito_codigo_de_barras, #fator_de_vencimento, #initialize, #linha_digitavel, #persisted?, #to_partial_path, valor_documento_tamanho_maximo, #valor_formatado_para_codigo_de_barras
Constructor Details
This class inherits a constructor from BoletoBancario::Core::Boleto
Class Method Details
.carteiras_suportadas ⇒ Array
Carteiras suportadas.
Método criado para validar se a carteira informada é suportada.
121 122 123 |
# File 'lib/boleto_bancario/core/bradesco.rb', line 121 def self.carteiras_suportadas %w[03 06 09 19 21 22] end |
.tamanho_maximo_agencia ⇒ Fixnum
Tamanho máximo de uma agência no Banco Bradesco. Método criado justamente para ficar documentado o tamanho máximo aceito até a data corrente.
100 101 102 |
# File 'lib/boleto_bancario/core/bradesco.rb', line 100 def self.tamanho_maximo_agencia 4 end |
.tamanho_maximo_conta_corrente ⇒ Fixnum
Tamanho máximo de uma conta corrente no Banco Bradesco. Método criado justamente para ficar documentado o tamanho máximo aceito até a data corrente.
91 92 93 |
# File 'lib/boleto_bancario/core/bradesco.rb', line 91 def self.tamanho_maximo_conta_corrente 7 end |
.tamanho_maximo_numero_documento ⇒ Fixnum
Tamanho máximo do número do documento emitido no Boleto. O tamanho máximo é justamente 8 porque no código de barras só é permitido 8 posições para este campo.
Método criado justamente para ficar documentado o tamanho máximo aceito até a data corrente.
111 112 113 |
# File 'lib/boleto_bancario/core/bradesco.rb', line 111 def self.tamanho_maximo_numero_documento 11 end |
Instance Method Details
#agencia ⇒ String
Returns 4 caracteres.
173 174 175 |
# File 'lib/boleto_bancario/core/bradesco.rb', line 173 def agencia @agencia.to_s.rjust(4, '0') if @agencia.present? end |
#agencia_codigo_cedente ⇒ String
Campo preenchido com:
-
Agência com 4 caracteres - digito da agência / Conta de Cobrança com 7 caracteres - Digito da Conta
Exemplo: 9999-D/9999999-D
Obs.: Preencher com zeros a Esquerda quando necessário.
245 246 247 |
# File 'lib/boleto_bancario/core/bradesco.rb', line 245 def agencia_codigo_cedente "#{agencia}-#{digito_agencia} / #{conta_corrente}-#{digito_conta_corrente}" end |
#carteira ⇒ String
Returns 2 caracteres.
185 186 187 |
# File 'lib/boleto_bancario/core/bradesco.rb', line 185 def carteira @carteira.to_s.rjust(2, '0') if @carteira.present? end |
#carteira_formatada ⇒ Object
Número da Carteira de Cobrança, que a empresa opera no Banco. No caso da Cobrança Interna será:
21 – Cobrança Interna Com Registro 22 – Cobrança Interna sem registro
Para as demais carteiras, retornar o número da carteira.
197 198 199 200 201 202 203 |
# File 'lib/boleto_bancario/core/bradesco.rb', line 197 def carteira_formatada if cobranca_interna_formatada.present? cobranca_interna_formatada else carteira end end |
#cobranca_interna_formatada ⇒ String
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Retorna a mensagem que devera aparecer no campo carteira para cobranca interna.
291 292 293 294 |
# File 'lib/boleto_bancario/core/bradesco.rb', line 291 def cobranca_interna_formatada cobranca_interna = { '21' => '21 – Cobrança Interna Com Registro', '22' => '22 – Cobrança Interna sem registro' } cobranca_interna[carteira.to_s] end |
#codigo_banco ⇒ String
Returns Código do Banco descrito na documentação.
207 208 209 |
# File 'lib/boleto_bancario/core/bradesco.rb', line 207 def codigo_banco '237' end |
#codigo_de_barras_do_banco ⇒ Object
Código de barras do banco
___________________________________________________________________________________________________
| Posição | Tamanho | Descrição |
|----------|---------|-----------------------------------------------------------------------------|
| 20-23 | 04 | Agência (Sem o digito, completar com zeros a esquerda se necessário) |
| 24-25 | 02 | Carteira |
| 26-36 | 11 | Número do Documento - Número do Nosso Número (Sem o digito verificador) |
| 37-43 | 07 | Conta Corrente (Sem o digito, completar com zeros a esquerda se necessário) |
| 44 | 01 | Zero |
----------------------------------------------------------------------------------------------------
282 283 284 |
# File 'lib/boleto_bancario/core/bradesco.rb', line 282 def "#{agencia}#{carteira}#{numero_documento}#{conta_corrente}0" end |
#conta_corrente ⇒ String
Returns 7 caracteres.
167 168 169 |
# File 'lib/boleto_bancario/core/bradesco.rb', line 167 def conta_corrente @conta_corrente.to_s.rjust(7, '0') if @conta_corrente.present? end |
#digito_agencia ⇒ String
Dígito do código da agência. Precisa mostrar esse dígito no boleto.
223 224 225 |
# File 'lib/boleto_bancario/core/bradesco.rb', line 223 def digito_agencia Modulo11FatorDe9a2.new(agencia) end |
#digito_codigo_banco ⇒ String
Dígito do código do banco. Precisa mostrar esse dígito no boleto.
215 216 217 |
# File 'lib/boleto_bancario/core/bradesco.rb', line 215 def digito_codigo_banco '2' end |
#digito_conta_corrente ⇒ String
Dígito da conta corrente. Precisa mostrar esse dígito no boleto.
231 232 233 |
# File 'lib/boleto_bancario/core/bradesco.rb', line 231 def digito_conta_corrente Modulo11FatorDe9a2.new(conta_corrente) end |
#digito_nosso_numero ⇒ String
Para o cálculo do dígito, será necessário acrescentar o número da carteira à esquerda antes do Nosso Número (número do documento), e aplicar o módulo 11, com fatores de 2 a 7.
Para mais detalhes de como o cálculo é feito veja a classe Modulo11FatorDe2a7.
266 267 268 |
# File 'lib/boleto_bancario/core/bradesco.rb', line 266 def digito_nosso_numero Modulo11FatorDe2a7.new("#{carteira}#{numero_documento}") end |
#nosso_numero ⇒ Object
Nosso Número descrito na documentação (Pag. 53).
Carteira com 2 (dois) caracteres / N.Número com 11 (onze) caracteres + digito.
Exemplo: 99 / 99999999999-D
255 256 257 |
# File 'lib/boleto_bancario/core/bradesco.rb', line 255 def nosso_numero "#{carteira}/#{numero_documento}-#{digito_nosso_numero}" end |
#numero_documento ⇒ String
Returns 11 caracteres.
179 180 181 |
# File 'lib/boleto_bancario/core/bradesco.rb', line 179 def numero_documento @numero_documento.to_s.rjust(11, '0') if @numero_documento.present? end |