Class: BoletoBancario::Core::Sicredi

Inherits:
Boleto
  • Object
show all
Defined in:
lib/boleto_bancario/core/sicredi.rb

Overview

Implementação de emissão de boleto bancário pela Cooperativa de Credito Sicredi.

Documentação Implementada

A documentação na qual essa implementação foi baseada está localizada na pasta ‘documentacoes_dos_boletos/sicredi’ dentro dessa biblioteca.

Carteiras suportadas

Segue abaixo as carteiras suportadas pelo Sicredi seguindo a documentação:

 __________________________________________
| Carteira | Descrição                     |
|    03    | Cobrança Simples sem registro |
|    C     | Cobrança Simples sem registro |
|__________________________________________|

Instance Attribute Summary collapse

Attributes inherited from Boleto

#aceite, #carteira, #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

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

#byte_idString

Returns 1 caracteres.

Returns:

  • (String)

    1 caracteres



25
26
27
# File 'lib/boleto_bancario/core/sicredi.rb', line 25

def byte_id
  @byte_id
end

#postoString

Returns 2 caracteres.

Returns:

  • (String)

    2 caracteres



22
23
24
# File 'lib/boleto_bancario/core/sicredi.rb', line 22

def posto
  @posto
end

Class Method Details

.byte_id_suportadosArray

Byte Identificadores suportados. Método criado para validar se o byte identificador informado é suportado.

Returns:

  • (Array)


59
60
61
# File 'lib/boleto_bancario/core/sicredi.rb', line 59

def self.byte_id_suportados
  %w[2 3 4 5 6 7 8 9]
end

.carteiras_suportadasArray

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

Returns:

  • (Array)


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

def self.carteiras_suportadas
  %w[03 C]
end

.tamanho_maximo_agenciaFixnum

Tamanho máximo de uma agência no Sicredi. Método criado justamente para ficar documentado o tamanho máximo aceito até a data corrente.

Returns:

  • (Fixnum)

    4



32
33
34
# File 'lib/boleto_bancario/core/sicredi.rb', line 32

def self.tamanho_maximo_agencia
  4
end

.tamanho_maximo_conta_correnteFixnum

Tamanho máximo da conta corrente no Boleto. Método criado justamente para ficar documentado o tamanho máximo aceito até a data corrente.

Returns:

  • (Fixnum)

    5



41
42
43
# File 'lib/boleto_bancario/core/sicredi.rb', line 41

def self.tamanho_maximo_conta_corrente
  5
end

.tamanho_maximo_numero_documentoFixnum

Tamanho máximo do número do documento emitido no Boleto. Método criado justamente para ficar documentado o tamanho máximo aceito até a data corrente.

Returns:

  • (Fixnum)

    5



77
78
79
# File 'lib/boleto_bancario/core/sicredi.rb', line 77

def self.tamanho_maximo_numero_documento
  5
end

.tamanho_maximo_postoFixnum

Tamanho máximo do posto no Boleto. Método criado justamente para ficar documentado o tamanho máximo aceito até a data corrente.

Returns:

  • (Fixnum)

    2



50
51
52
# File 'lib/boleto_bancario/core/sicredi.rb', line 50

def self.tamanho_maximo_posto
  2
end

Instance Method Details

#agenciaString

Returns 4 caracteres.

Returns:

  • (String)

    4 caracteres



135
136
137
# File 'lib/boleto_bancario/core/sicredi.rb', line 135

def agencia
  @agencia.to_s.rjust(4, '0') if @agencia.present?
end

#agencia_codigo_cedenteString

Campo Agência/Código Beneficiário (:conta_corrente) formatado

Returns:

  • (String)

    Campo descrito na documentação.



187
188
189
# File 'lib/boleto_bancario/core/sicredi.rb', line 187

def agencia_codigo_cedente
  "#{agencia}.#{posto}.#{conta_corrente}"
end

#anoString

Ano atual usado para os calculos

Returns:

  • (String)


221
222
223
# File 'lib/boleto_bancario/core/sicredi.rb', line 221

def ano
  Date.today.strftime('%y')
end

#carteira_formatadaString

A formatação da Carteira Simples é 1

Returns:

  • (String)


167
168
169
# File 'lib/boleto_bancario/core/sicredi.rb', line 167

def carteira_formatada
  tipo_carteira
end

#codigo_bancoString

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

Returns:

  • (String)

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



173
174
175
# File 'lib/boleto_bancario/core/sicredi.rb', line 173

def codigo_banco
  '748'
end

#codigo_de_barras_do_bancoString

Código de barras do banco

 __________________________________________________________________________
| Posição | Tamanho | Descrição                                            |
|---------|---------|------------------------------------------------------|
| 20 – 21 |   02    | Carteira                                             |
| 22 – 30 |   09    | Nosso número com o digito identificador              |
| 31 – 34 |   04    | Cooperativa de crédito/agência beneficiária          |
| 35 – 36 |   02    | Posto da cooperativa de crédito/agência beneficiária |
| 37 – 41 |   05    | Código do beneficiário                               |
| 42 – 42 |   01    | Será 1 quando houver o valor do documento            |
| 43 – 43 |   01    | Fixo 0                                               |
| 44 – 44 |   01    | DV do campo livre                                    |
|__________________________________________________________________________|

Returns:

  • (String)


255
256
257
258
259
260
261
# File 'lib/boleto_bancario/core/sicredi.rb', line 255

def codigo_de_barras_do_banco
  codigo = "#{tipo_cobranca}#{tipo_carteira}#{nosso_numero_codigo_de_barras}#{agencia}#{posto}#{conta_corrente}#{valor_expresso}0"

  codigo_dv = Modulo11FatorDe2a9RestoZero.new(codigo)

  "#{codigo}#{codigo_dv}"
end

#conta_correnteString

Returns 5 caracteres.

Returns:

  • (String)

    5 caracteres



141
142
143
# File 'lib/boleto_bancario/core/sicredi.rb', line 141

def conta_corrente
  @conta_corrente.to_s.rjust(5, '0') if @conta_corrente.present?
end

#deve_validar_byte_id?True

Método usado para verificar se deve realizar a validação de tamanho do campo ‘byte_id’. Sobrescreva esse método na subclasse, caso você mesmo queira fazer as validações.

Returns:

  • (True)


285
286
287
# File 'lib/boleto_bancario/core/sicredi.rb', line 285

def deve_validar_byte_id?
  true
end

#deve_validar_posto?True

Método usado para verificar se deve realizar a validação de tamanho do campo ‘posto’. Sobrescreva esse método na subclasse, caso você mesmo queira fazer as validações.

Returns:

  • (True)


276
277
278
# File 'lib/boleto_bancario/core/sicredi.rb', line 276

def deve_validar_posto?
  true
end

#digito_codigo_bancoString

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

Returns:

  • (String)

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



179
180
181
# File 'lib/boleto_bancario/core/sicredi.rb', line 179

def digito_codigo_banco
  'X'
end

#nosso_numeroString

Mostra o campo nosso número calculando o dígito verificador do nosso número. AA/BXXXXX-D onde:

AA = Ano atual, apenas os dois ultimos digitos.
B = Byte Identificador (2 a 9). 1 só poderá ser utilizado pela cooperativa.
XXXXX – Número do Documento.
D = Digito Verificador pelo módulo 11.

EX: 13/200004-1

Returns:

  • (String)


213
214
215
# File 'lib/boleto_bancario/core/sicredi.rb', line 213

def nosso_numero
  "#{ano}/#{byte_id}#{numero_documento}-#{nosso_numero_dv}"
end

#nosso_numero_codigo_de_barrasObject



263
264
265
# File 'lib/boleto_bancario/core/sicredi.rb', line 263

def nosso_numero_codigo_de_barras
  "#{ano}#{byte_id}#{numero_documento}#{nosso_numero_dv}"
end

#nosso_numero_dvString

Digito verificador do nosso número Calculado atravez do modulo 11 com peso de 2 a 9 da direta para a esquerda.

____________________________________________________________________________

| | Agencia | Posto | Conta Corrente | Ano | Byte | Numero Documento | |———|———|——-|—————-|—–|——|——————| | Tamanho | 04 | 02 | 05 | 02 | 01 | 05 | |_|__|

Returns:

  • (String)


235
236
237
# File 'lib/boleto_bancario/core/sicredi.rb', line 235

def nosso_numero_dv
  Modulo11FatorDe2a9RestoZero.new("#{agencia}#{posto}#{conta_corrente}#{ano}#{byte_id}#{numero_documento}")
end

#numero_documentoString

Returns 5 caracteres.

Returns:

  • (String)

    5 caracteres



159
160
161
# File 'lib/boleto_bancario/core/sicredi.rb', line 159

def numero_documento
  @numero_documento.to_s.rjust(5, '0') if @numero_documento.present?
end

#tipo_carteiraString

Returns Código referente ao tipo de carteira.

Returns:

  • (String)

    Código referente ao tipo de carteira



199
200
201
# File 'lib/boleto_bancario/core/sicredi.rb', line 199

def tipo_carteira
  "1"
end

#tipo_cobrancaString

Returns Código referente ao tipo de cobrança.

Returns:

  • (String)

    Código referente ao tipo de cobrança



193
194
195
# File 'lib/boleto_bancario/core/sicredi.rb', line 193

def tipo_cobranca
  "3" # Somente sem registro
end

#valor_expressoObject



267
268
269
# File 'lib/boleto_bancario/core/sicredi.rb', line 267

def valor_expresso
  @valor_documento.present? ? '1' : '0'
end