Class: BoletoBancario::Core::Sicredi
- 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
-
#byte_id ⇒ String
1 caracteres.
-
#posto ⇒ String
2 caracteres.
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
-
.byte_id_suportados ⇒ Array
Byte Identificadores suportados. Método criado para validar se o byte identificador informado é suportado..
-
.carteiras_suportadas ⇒ Array
Carteiras suportadas. Método criado para validar se a carteira informada é suportada..
-
.tamanho_maximo_agencia ⇒ Fixnum
Tamanho máximo de uma agência no Sicredi.
-
.tamanho_maximo_conta_corrente ⇒ Fixnum
Tamanho máximo da conta corrente no Boleto.
-
.tamanho_maximo_numero_documento ⇒ Fixnum
Tamanho máximo do número do documento emitido no Boleto.
-
.tamanho_maximo_posto ⇒ Fixnum
Tamanho máximo do posto no Boleto.
Instance Method Summary collapse
-
#agencia ⇒ String
4 caracteres.
-
#agencia_codigo_cedente ⇒ String
Campo Agência/Código Beneficiário (:conta_corrente) formatado.
-
#ano ⇒ String
Ano atual usado para os calculos.
-
#carteira_formatada ⇒ String
A formatação da Carteira Simples é 1.
-
#codigo_banco ⇒ String
Código do Banco descrito na documentação.
-
#codigo_de_barras_do_banco ⇒ String
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 | |__|.
-
#conta_corrente ⇒ String
5 caracteres.
-
#deve_validar_byte_id? ⇒ True
Método usado para verificar se deve realizar a validação de tamanho do campo ‘byte_id’.
-
#deve_validar_posto? ⇒ True
Método usado para verificar se deve realizar a validação de tamanho do campo ‘posto’.
-
#digito_codigo_banco ⇒ String
Dígito do código do banco descrito na documentação.
-
#nosso_numero ⇒ String
Mostra o campo nosso número calculando o dígito verificador do nosso número.
- #nosso_numero_codigo_de_barras ⇒ Object
-
#nosso_numero_dv ⇒ String
Digito verificador do nosso número Calculado atravez do modulo 11 com peso de 2 a 9 da direta para a esquerda.
-
#numero_documento ⇒ String
5 caracteres.
-
#tipo_carteira ⇒ String
Código referente ao tipo de carteira.
-
#tipo_cobranca ⇒ String
Código referente ao tipo de cobrança.
- #valor_expresso ⇒ Object
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_id ⇒ String
Returns 1 caracteres.
25 26 27 |
# File 'lib/boleto_bancario/core/sicredi.rb', line 25 def byte_id @byte_id end |
#posto ⇒ String
Returns 2 caracteres.
22 23 24 |
# File 'lib/boleto_bancario/core/sicredi.rb', line 22 def posto @posto end |
Class Method Details
.byte_id_suportados ⇒ Array
Byte Identificadores suportados. Método criado para validar se o byte identificador informado é suportado.
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_suportadas ⇒ Array
Carteiras suportadas. Método criado para validar se a carteira informada é suportada.
68 69 70 |
# File 'lib/boleto_bancario/core/sicredi.rb', line 68 def self.carteiras_suportadas %w[03 C] end |
.tamanho_maximo_agencia ⇒ Fixnum
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.
32 33 34 |
# File 'lib/boleto_bancario/core/sicredi.rb', line 32 def self.tamanho_maximo_agencia 4 end |
.tamanho_maximo_conta_corrente ⇒ Fixnum
Tamanho máximo da conta corrente no Boleto. Método criado justamente para ficar documentado o tamanho máximo aceito até a data corrente.
41 42 43 |
# File 'lib/boleto_bancario/core/sicredi.rb', line 41 def self.tamanho_maximo_conta_corrente 5 end |
.tamanho_maximo_numero_documento ⇒ Fixnum
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.
77 78 79 |
# File 'lib/boleto_bancario/core/sicredi.rb', line 77 def self.tamanho_maximo_numero_documento 5 end |
.tamanho_maximo_posto ⇒ Fixnum
Tamanho máximo do posto no Boleto. Método criado justamente para ficar documentado o tamanho máximo aceito até a data corrente.
50 51 52 |
# File 'lib/boleto_bancario/core/sicredi.rb', line 50 def self.tamanho_maximo_posto 2 end |
Instance Method Details
#agencia ⇒ String
Returns 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_cedente ⇒ String
Campo Agência/Código Beneficiário (:conta_corrente) formatado
187 188 189 |
# File 'lib/boleto_bancario/core/sicredi.rb', line 187 def agencia_codigo_cedente "#{agencia}.#{posto}.#{conta_corrente}" end |
#ano ⇒ String
Ano atual usado para os calculos
221 222 223 |
# File 'lib/boleto_bancario/core/sicredi.rb', line 221 def ano Date.today.strftime('%y') end |
#carteira_formatada ⇒ String
A formatação da Carteira Simples é 1
167 168 169 |
# File 'lib/boleto_bancario/core/sicredi.rb', line 167 def carteira_formatada tipo_carteira end |
#codigo_banco ⇒ String
Returns 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_banco ⇒ String
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 |
|__________________________________________________________________________|
255 256 257 258 259 260 261 |
# File 'lib/boleto_bancario/core/sicredi.rb', line 255 def codigo = "#{tipo_cobranca}#{tipo_carteira}#{}#{agencia}#{posto}#{conta_corrente}#{valor_expresso}0" codigo_dv = Modulo11FatorDe2a9RestoZero.new(codigo) "#{codigo}#{codigo_dv}" end |
#conta_corrente ⇒ String
Returns 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.
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.
276 277 278 |
# File 'lib/boleto_bancario/core/sicredi.rb', line 276 def deve_validar_posto? true end |
#digito_codigo_banco ⇒ String
Returns 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_numero ⇒ String
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
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_barras ⇒ Object
263 264 265 |
# File 'lib/boleto_bancario/core/sicredi.rb', line 263 def "#{ano}#{byte_id}#{numero_documento}#{nosso_numero_dv}" end |
#nosso_numero_dv ⇒ String
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 | |_|__|
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_documento ⇒ String
Returns 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_carteira ⇒ String
Returns 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_cobranca ⇒ String
Returns 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_expresso ⇒ Object
267 268 269 |
# File 'lib/boleto_bancario/core/sicredi.rb', line 267 def valor_expresso @valor_documento.present? ? '1' : '0' end |