class Boletorb::Boleto

Attributes

aceite[RW]
cedente[RW]
data_processamento[RW]
especie[RW]
instrucao_1[RW]
instrucao_2[RW]
instrucao_3[RW]
instrucao_4[RW]
instrucao_5[RW]
instrucao_6[RW]
instrucao_7[RW]
ios[RW]
linha_digitavel[R]
local_pagamento[RW]
nosso_numero[RW]
numero_documento[RW]
sacado[RW]
valor[RW]
vencimento[RW]

Public Class Methods

new() click to toggle source
# File lib/boletorb.rb, line 31
def initialize
        @linha_digitavel = ""
        @ios = "0"
        @aceite = "S"
        @especie = "DM"
end

Public Instance Methods

fator_vencimento() click to toggle source
# File lib/boletorb.rb, line 42
def fator_vencimento
        data_fator = DateTime.parse("07/10/1997", "DD/MM/YYYY")
        data_vencimento = DateTime.parse(vencimento, "DD/MM/YYYY")
        data_vencimento.mjd - data_fator.mjd
end
formata_valor_para_inteiro() click to toggle source
# File lib/boletorb.rb, line 57
def formata_valor_para_inteiro
        valor_formatado = (valor.round(2) * 100).to_i.to_s
end
gera() click to toggle source
# File lib/boletorb.rb, line 38
def gera
        raise NotImplementedHere
end
nosso_numero_formatado() click to toggle source
# File lib/boletorb.rb, line 61
def nosso_numero_formatado
        numero = nosso_numero.rjust(12, "0")
        digito_verificador = modulo_11(numero)
        "#{numero}#{digito_verificador}"
end
valor_nominal() click to toggle source
# File lib/boletorb.rb, line 48
def valor_nominal
        valor_formatado = formata_valor_para_inteiro
        tamanho_valor = valor_formatado.size
        for i in 1..(10 - tamanho_valor)
                valor_formatado = "0#{valor_formatado}"
        end
        valor_formatado
end

Private Instance Methods

modulo_10(numero) click to toggle source
# File lib/boletorb.rb, line 81
def modulo_10(numero)
        resultado = multiplicacoes_modulo_10(numero)
        soma = resultado.inject(:+)
        modulo = 10 - (soma % 10)
        return 0 if modulo == 10
        modulo
end
modulo_11(numero) click to toggle source
# File lib/boletorb.rb, line 68
def modulo_11(numero)
        numero.gsub!(".", "")
        numero.gsub!(" ", "")

        resultados = multiplicacoes_modulo_11(numero)

        soma = resultados.inject(:+)
        resto = (soma % 11)
        dv = 11 - resto
        dv = 1 if (resto == 0 || resto == 1 || resto == 10)
        dv
end
multiplicacoes_modulo_10(numero) click to toggle source
# File lib/boletorb.rb, line 106
def multiplicacoes_modulo_10(numero)
        numero.gsub!(".", "")
        numero.gsub!(" ", "")
        resultado = []
        multi = 2
        for i in 0..numero.size - 1
                valor = numero[numero.size - 1 - i].to_i * multi
                #quebrando valor em todos os casos
                while (((valor % 10) > - 1) && valor > 0)
                        resultado << valor % 10
                        valor = valor / 10
                end
                if (multi == 2)
                        multi = 1
                else
                        multi = 2
                end
        end
        resultado
end
multiplicacoes_modulo_11(num) click to toggle source
# File lib/boletorb.rb, line 89
def multiplicacoes_modulo_11(num)
        multi = 2
        multiplicadores = []
        resultados = []
        for i in 0..(num.size - 1)
                multiplicadores << multi
                multi = multi + 1
                multi = 2 if (multi > 9)
        end
        for i in 0..num.size - 1 
                indice = num.size - 1 - i
                valor = num[indice].to_i
                resultados << valor * multiplicadores[i]
        end
        resultados  
end