Class: BoletoBancario::Core::Santander
- Defined in:
- lib/boleto_bancario/core/santander.rb
Overview
Implementação de emissão de boleto bancário pelo Santander.
Documentação Implementada
A documentação na qual essa implementação foi baseada está localizada na pasta ‘documentacoes_dos_boletos/santander’ 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 itáu seguindo a documentação:
_________________________________________________________________________
| Carteira | Descrição | Testada/Homologada no banco |
| 101 | Cobrança Simples com registro | Esperando Contribuição |
| 102 | Cobrança Simples sem registro | Esperando Contribuição |
| 121 | Penhor Rápida com registro | Esperando Contribuição |
--------------------------------------------------------------------------
OBS.: Seja um contribuidor dessa gem. Contribua para homologar os boletos e as devidas carteiras junto ao banco Santander.
Validações
Caso você queira desabilitar todas as validações, existem alguns métodos que você pode sobrescrever na subclasse que você irá criar. No exemplo abaixo, desabilitará todas as validações:
class Santander < BoletoBancario::Santander
def deve_validar_agencia?
false
end
def deve_validar_codigo_cedente?
false
end
def deve_validar_numero_documento?
false
end
def deve_validar_carteira?
false
end
end
OBS.: Muito cuidado ao desabilitar as validações, pois poderá ocorrer problemas no código de barras e na linha digitável. Ambos os métodos podem ser sobrescritos se você quiser também.
Instance Attribute Summary collapse
-
#iof ⇒ String
IOF é a sigla de Imposto sobre Operações de Crédito, Câmbio e Seguros, e é um imposto federal no Brasil.
Attributes inherited from Boleto
#aceite, #carteira, #cedente, #codigo_moeda, #conta_corrente, #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_codigo_cedente ⇒ Fixnum
Tamanho máximo do código do cedente emitido no Boleto.
-
.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 Agência / Código do Cedente (Número fornecido pelo Banco).
-
#carteira_formatada ⇒ String
Formata a carteira dependendo se ela é registrada ou não.
-
#carteiras_com_registro ⇒ Array
Retorna as carteiras com registro do banco Santander.
-
#codigo_banco ⇒ String
Código do Banco descrito na documentação.
-
#codigo_cedente ⇒ String
7 caracteres.
-
#codigo_de_barras_do_banco ⇒ String
Código de barras do banco.
-
#digito_codigo_banco ⇒ String
Dígito do código do banco.
-
#digito_nosso_numero ⇒ String
Calcula o dígito do nosso número pelo Módulo 11 fator de 2 a 9 verificando o resto como zero.
-
#nosso_numero ⇒ String
Mostra o campo nosso número calculando o dígito verificador do nosso número.
-
#numero_documento ⇒ String
12 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
Instance Attribute Details
#iof ⇒ String
IOF é a sigla de Imposto sobre Operações de Crédito, Câmbio e Seguros, e é um imposto federal no Brasil.
Seguradoras (Se 7% informar 7. Limitado a 9%) Demais clientes usar 0 (zero)
61 62 63 |
# File 'lib/boleto_bancario/core/santander.rb', line 61 def iof @iof end |
Class Method Details
.carteiras_suportadas ⇒ Array
Carteiras suportadas.
Método criado para validar se a carteira informada é suportada.
100 101 102 |
# File 'lib/boleto_bancario/core/santander.rb', line 100 def self.carteiras_suportadas %w[101 102 121] 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.
68 69 70 |
# File 'lib/boleto_bancario/core/santander.rb', line 68 def self.tamanho_maximo_agencia 4 end |
.tamanho_maximo_codigo_cedente ⇒ Fixnum
Tamanho máximo do código do cedente emitido no Boleto. O tamanho máximo é justamente 7 porque no código de barras só é permitido 7 posições para este campo.
Método criado justamente para ficar documentado o tamanho máximo aceito até a data corrente.
90 91 92 |
# File 'lib/boleto_bancario/core/santander.rb', line 90 def self.tamanho_maximo_codigo_cedente 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.
79 80 81 |
# File 'lib/boleto_bancario/core/santander.rb', line 79 def self.tamanho_maximo_numero_documento 12 end |
Instance Method Details
#agencia ⇒ String
Returns 4 caracteres.
146 147 148 |
# File 'lib/boleto_bancario/core/santander.rb', line 146 def agencia @agencia.to_s.rjust(4, '0') if @agencia.present? end |
#agencia_codigo_cedente ⇒ String
Campo Agência / Código do Cedente (Número fornecido pelo Banco)
206 207 208 |
# File 'lib/boleto_bancario/core/santander.rb', line 206 def agencia_codigo_cedente "#{agencia} / #{codigo_cedente}" end |
#carteira_formatada ⇒ String
Formata a carteira dependendo se ela é registrada ou não.
Para cobrança COM registro usar: COBRANCA SIMPLES ECR
Para Cobrança SEM registro usar: COBRANCA SIMPLES CSR
170 171 172 173 174 175 176 |
# File 'lib/boleto_bancario/core/santander.rb', line 170 def carteira_formatada if @carteira.to_s.in?(carteiras_com_registro) "COBRANÇA SIMPLES ECR" else 'COBRANÇA SIMPLES CSR' end end |
#carteiras_com_registro ⇒ Array
Retorna as carteiras com registro do banco Santander. Você pode sobrescrever esse método na subclasse caso exista mais carteiras com registro no Santander.
184 185 186 |
# File 'lib/boleto_bancario/core/santander.rb', line 184 def carteiras_com_registro %w(101 121) end |
#codigo_banco ⇒ String
Returns Código do Banco descrito na documentação.
190 191 192 |
# File 'lib/boleto_bancario/core/santander.rb', line 190 def codigo_banco '033' end |
#codigo_cedente ⇒ String
Returns 7 caracteres.
152 153 154 |
# File 'lib/boleto_bancario/core/santander.rb', line 152 def codigo_cedente @codigo_cedente.to_s.rjust(7, '0') if @codigo_cedente.present? end |
#codigo_de_barras_do_banco ⇒ String
Código de barras do banco
___________________________________________________________________________________________________
| Posição | Tamanho | Descrição |
|----------|---------|-----------------------------------------------------------------------------|
| 20 | 01 | Fixo '9' |
| 21-27 | 07 | Código do cedente padrão Santander |
| 28-40 | 13 | Nosso Número (veja a observação abaixo) |
| 41 | 01 | IOF (veja o método #iof) |
| 42-44 | 03 | Carteira |
----------------------------------------------------------------------------------------------------
OBS.: Caso o arquivo de registro para os títulos seja de 400 bytes (CNAB). Utilizar somente 08 posições do Nosso Numero (07 posições + DV), zerando os 05 primeiros dígitos. Utilizar somente 09 posições do Nosso Numero (08 posições + DV), zerando os 04 primeiros dígitos.
Para utilizar esse número de posições no nosso número é só colocar o tamanho ideal no numero_documento. Por exemplo:
Santander.new(:numero_documento => '1234567') # Irá zerar os 05 primeiros dígitos.
Santander.new(:numero_documento => '12345678') # Irá zerar os 04 primeiros dígitos.
252 253 254 |
# File 'lib/boleto_bancario/core/santander.rb', line 252 def "9#{codigo_cedente}#{numero_documento}#{digito_nosso_numero}#{iof}#{carteira}" end |
#digito_codigo_banco ⇒ String
Dígito do código do banco. Precisa mostrar esse dígito no boleto.
198 199 200 |
# File 'lib/boleto_bancario/core/santander.rb', line 198 def digito_codigo_banco '7' end |
#digito_nosso_numero ⇒ String
Calcula o dígito do nosso número pelo Módulo 11 fator de 2 a 9 verificando o resto como zero. Para mais detalhes veja a classe BoletoBancario::Calculos::Modulo11FatorDe2a9RestoZero.
223 224 225 |
# File 'lib/boleto_bancario/core/santander.rb', line 223 def digito_nosso_numero Modulo11FatorDe2a9RestoZero.new(numero_documento) end |
#nosso_numero ⇒ String
Mostra o campo nosso número calculando o dígito verificador do nosso número.
214 215 216 |
# File 'lib/boleto_bancario/core/santander.rb', line 214 def nosso_numero "#{numero_documento}-#{digito_nosso_numero}" end |
#numero_documento ⇒ String
Returns 12 caracteres.
158 159 160 |
# File 'lib/boleto_bancario/core/santander.rb', line 158 def numero_documento @numero_documento.to_s.rjust(12, '0') if @numero_documento.present? end |