Class: Brcobranca::Boleto::Sicoob

Inherits:
Base
  • Object
show all
Defined in:
lib/brcobranca/boleto/sicoob.rb

Overview

Sicoob (Bancoob)

Instance Attribute Summary

Attributes inherited from Base

#aceite, #agencia, #avalista, #avalista_documento, #carteira, #carteira_label, #cedente, #cedente_endereco, #codigo_servico, #conta_corrente, #convenio, #data_documento, #data_processamento, #data_vencimento, #demonstrativo, #documento_cedente, #documento_numero, #especie, #especie_documento, #instrucao1, #instrucao2, #instrucao3, #instrucao4, #instrucao5, #instrucao6, #instrucao7, #instrucoes, #local_pagamento, #moeda, #nosso_numero, #quantidade, #sacado, #sacado_documento, #sacado_endereco, #valor, #variacao

Instance Method Summary collapse

Methods inherited from Base

#agencia_dv, #codigo_barras, #conta_corrente_dv, #fator_vencimento, #logotipo, #valor_documento

Methods included from Template::Base

#define_template

Methods included from Validations

#errors, included, #invalid?, #valid?

Constructor Details

#initialize(campos = {}) ⇒ Sicoob

Returns a new instance of Sicoob.


13
14
15
16
# File 'lib/brcobranca/boleto/sicoob.rb', line 13

def initialize(campos = {})
  campos = { carteira: '1', variacao: '01', quantidade: '001' }.merge!(campos)
  super(campos)
end

Instance Method Details

#agencia=(valor) ⇒ String

Agência

Returns:

  • (String)

    4 caracteres numéricos.


35
36
37
# File 'lib/brcobranca/boleto/sicoob.rb', line 35

def agencia=(valor)
  @agencia = valor.to_s.rjust(4, '0') if valor
end

#agencia_conta_boletoObject


103
104
105
# File 'lib/brcobranca/boleto/sicoob.rb', line 103

def agencia_conta_boleto
  "#{agencia} / #{convenio}"
end

#bancoString

Codigo do banco emissor (3 dígitos sempre)

Returns:

  • (String)

    3 caracteres numéricos.


21
22
23
# File 'lib/brcobranca/boleto/sicoob.rb', line 21

def banco
  '756'
end

#banco_dvString

Dígito verificador do banco

Returns:

  • (String)

    1 caractere.


28
29
30
# File 'lib/brcobranca/boleto/sicoob.rb', line 28

def banco_dv
  '0'
end

#codigo_barras_segunda_parteObject

Posição Tamanho Conteúdo

20 a 20      01                 Código da carteira de cobrança - vide planilha "Capa" deste arquivo
21 a 24      04                 Código da agência/cooperativa - verificar na planilha "Capa" deste arquivo
25 a 26      02                 Código da modalidade - verificar na planilha "Capa" deste arquivo
27 a 33      07                 Código do cedente/cliente - verificar na planilha "Capa" deste arquivo
34 a 41      08                 Nosso número do boleto
41 a 44      03                 Número da parcela a que o boleto se refere - "001" se parcela única

114
115
116
# File 'lib/brcobranca/boleto/sicoob.rb', line 114

def codigo_barras_segunda_parte
  "#{carteira}#{agencia}#{variacao}#{convenio}#{nosso_numero_boleto}#{quantidade}"
end

#convenio=(valor) ⇒ String

Convênio

Returns:

  • (String)

    7 caracteres numéricos.


42
43
44
# File 'lib/brcobranca/boleto/sicoob.rb', line 42

def convenio=(valor)
  @convenio = valor.to_s.rjust(7, '0') if valor
end

#nosso_numero=(valor) ⇒ String

Número documento

Returns:

  • (String)

    7 caracteres numéricos.


49
50
51
# File 'lib/brcobranca/boleto/sicoob.rb', line 49

def nosso_numero=(valor)
  @nosso_numero = valor.to_s.rjust(7, '0') if valor
end

#nosso_numero_boletoString

Nosso número para exibição no boleto.

Returns:

  • (String)

    8 caracteres numéricos.


63
64
65
# File 'lib/brcobranca/boleto/sicoob.rb', line 63

def nosso_numero_boleto
  "#{nosso_numero}#{nosso_numero_dv}"
end

#nosso_numero_dvObject

3.13. Nosso número: Código de controle que permite ao Sicoob e à empresa identificar os dados da cobrança que deu origem ao boleto.

Para o cálculo do dígito verificador do nosso número, deverá ser utilizada a fórmula abaixo: Número da Cooperativa 9(4) – vide planilha “Capa” deste arquivo Código do Cliente 9(10) – vide planilha “Capa” deste arquivo Nosso Número 9(7) – Iniciado em 1

Constante para cálculo = 3197

a) Concatenar na seqüência completando com zero à esquerda.

Ex.:Número da Cooperativa  = 0001
      Número do Cliente  = 1-9
      Nosso Número  = 21
      000100000000190000021

b) Alinhar a constante com a seqüência repetindo de traz para frente.

Ex.: 000100000000190000021
     319731973197319731973

c) Multiplicar cada componente da seqüência com o seu correspondente da constante e somar os resultados.

Ex.: 1*7 + 1*3 + 9*1 + 2*7 + 1*3 = 36

d) Calcular o Resto através do Módulo 11.

Ex.: 36/11 = 3, resto = 3

e) O resto da divisão deverá ser subtraído de 11 achando assim o DV (Se o Resto for igual a 0 ou 1 então o DV é igual a 0).

Ex.: 11 – 3 = 8, então Nosso Número + DV = 21-8

95
96
97
98
99
100
101
# File 'lib/brcobranca/boleto/sicoob.rb', line 95

def nosso_numero_dv
  "#{agencia}#{convenio.rjust(10, '0')}#{nosso_numero}".modulo11(
    reverse: false,
    multiplicador: [3, 1, 9, 7],
    mapeamento: { 10 => 0, 11 => 0 }
  ) { |t| 11 - (t % 11) }
end

#quantidade=(valor) ⇒ String

Quantidade

Returns:

  • (String)

    3 caracteres numéricos.


56
57
58
# File 'lib/brcobranca/boleto/sicoob.rb', line 56

def quantidade=(valor)
  @quantidade = valor.to_s.rjust(3, '0') if valor
end