Class: BoletoBancario::Core::Santander

Inherits:
Boleto
  • Object
show all
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

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

Instance Method Summary collapse

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

#iofString

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)

Returns:

  • (String)


61
62
63
# File 'lib/boleto_bancario/core/santander.rb', line 61

def iof
  @iof
end

Class Method Details

.carteiras_suportadasArray

Carteiras suportadas.

Método criado para validar se a carteira informada é suportada.

Returns:

  • (Array)


100
101
102
# File 'lib/boleto_bancario/core/santander.rb', line 100

def self.carteiras_suportadas
  %w[101 102 121]
end

.tamanho_maximo_agenciaFixnum

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.

Returns:

  • (Fixnum)

    4



68
69
70
# File 'lib/boleto_bancario/core/santander.rb', line 68

def self.tamanho_maximo_agencia
  4
end

.tamanho_maximo_codigo_cedenteFixnum

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.

Returns:

  • (Fixnum)

    7



90
91
92
# File 'lib/boleto_bancario/core/santander.rb', line 90

def self.tamanho_maximo_codigo_cedente
  7
end

.tamanho_maximo_numero_documentoFixnum

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.

Returns:

  • (Fixnum)

    11



79
80
81
# File 'lib/boleto_bancario/core/santander.rb', line 79

def self.tamanho_maximo_numero_documento
  12
end

Instance Method Details

#agenciaString

Returns 4 caracteres.

Returns:

  • (String)

    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_cedenteString

Campo Agência / Código do Cedente (Número fornecido pelo Banco)

Returns:

  • (String)


206
207
208
# File 'lib/boleto_bancario/core/santander.rb', line 206

def agencia_codigo_cedente
  "#{agencia} / #{codigo_cedente}"
end

#carteira_formatadaString

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

Returns:

  • (String)


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_registroArray

Retorna as carteiras com registro do banco Santander. Você pode sobrescrever esse método na subclasse caso exista mais carteiras com registro no Santander.

Returns:

  • (Array)


184
185
186
# File 'lib/boleto_bancario/core/santander.rb', line 184

def carteiras_com_registro
  %w(101 121)
end

#codigo_bancoString

Returns Código do Banco descrito na documentação.

Returns:

  • (String)

    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_cedenteString

Returns 7 caracteres.

Returns:

  • (String)

    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_bancoString

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.

Returns:

  • (String)


252
253
254
# File 'lib/boleto_bancario/core/santander.rb', line 252

def codigo_de_barras_do_banco
  "9#{codigo_cedente}#{numero_documento}#{digito_nosso_numero}#{iof}#{carteira}"
end

#digito_codigo_bancoString

Dígito do código do banco. Precisa mostrar esse dígito no boleto.

Returns:

  • (String)

    Dígito do código do banco descrito na documentação.



198
199
200
# File 'lib/boleto_bancario/core/santander.rb', line 198

def digito_codigo_banco
  '7'
end

#digito_nosso_numeroString

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.

Returns:

  • (String)


223
224
225
# File 'lib/boleto_bancario/core/santander.rb', line 223

def digito_nosso_numero
  Modulo11FatorDe2a9RestoZero.new(numero_documento)
end

#nosso_numeroString

Mostra o campo nosso número calculando o dígito verificador do nosso número.

Returns:

  • (String)


214
215
216
# File 'lib/boleto_bancario/core/santander.rb', line 214

def nosso_numero
  "#{numero_documento}-#{digito_nosso_numero}"
end

#numero_documentoString

Returns 12 caracteres.

Returns:

  • (String)

    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