class VerificadorBoletoBr::Slip::Bank::Validity

Attributes

digitable_line[RW]
errors[RW]
kind[RW]

Public Class Methods

new(cod) click to toggle source
# File lib/verificador_boleto_br/slip/bank/validity.rb, line 11
def initialize(cod)
  @digitable_line = cod
  raise ArgumentError, 'Expected String'              unless @digitable_line.class.eql?(String)
  raise ArgumentError, 'Invalid Digitable Line'       unless clean_digitable_line.size == 47

  @kind = :bank_slip
end

Public Instance Methods

bank_code() click to toggle source
# File lib/verificador_boleto_br/slip/bank/validity.rb, line 23
def bank_code
  clean_digitable_line[0..2].to_i
end
block_1_validity() click to toggle source
# File lib/verificador_boleto_br/slip/bank/validity.rb, line 43
def block_1_validity
  modulo10(clean_digitable_line[0..8]).eql?clean_digitable_line[9].to_i
end
block_2_validity() click to toggle source
# File lib/verificador_boleto_br/slip/bank/validity.rb, line 47
def block_2_validity
  modulo10(clean_digitable_line[10..19]).eql?clean_digitable_line[20].to_i
end
block_3_validity() click to toggle source
# File lib/verificador_boleto_br/slip/bank/validity.rb, line 51
def block_3_validity
  modulo10(clean_digitable_line[21..30]).eql?clean_digitable_line[31].to_i
end
clean_digitable_line() click to toggle source
# File lib/verificador_boleto_br/slip/bank/validity.rb, line 19
def clean_digitable_line
  clean_masks(@digitable_line)
end
currency_code() click to toggle source
# File lib/verificador_boleto_br/slip/bank/validity.rb, line 27
def currency_code
  clean_digitable_line[3].to_i
end
due_date() click to toggle source
# File lib/verificador_boleto_br/slip/bank/validity.rb, line 68
def due_date
  begin
    bank_epoque(clean_digitable_line[33..36].to_i)
  rescue
    nil
  end
end
global_validity() click to toggle source
# File lib/verificador_boleto_br/slip/bank/validity.rb, line 55
def global_validity
  str = ""
  str += clean_digitable_line[0..2]
  str += clean_digitable_line[3..3]
  str += clean_digitable_line[32..32]
  str += clean_digitable_line[33..36]
  str += clean_digitable_line[37..46]
  str += clean_digitable_line[4..8]
  str += clean_digitable_line[10..19]
  str += clean_digitable_line[21..30]
  modulo11(str[0..3] + str[5..-1]).eql?(verification_digit)
end
grouped_digitable_line() click to toggle source
# File lib/verificador_boleto_br/slip/bank/validity.rb, line 84
def grouped_digitable_line
  [
    {
      group: 0,
      valid: block_1_validity
    },
    {
      group: 1,
      valid: block_2_validity
    },
    {
      group: 2,
      valid: block_2_validity
    },
  ]
end
identification() click to toggle source
# File lib/verificador_boleto_br/slip/bank/validity.rb, line 105
def identification
  'Boleto Bancário'
end
segment() click to toggle source
# File lib/verificador_boleto_br/slip/bank/validity.rb, line 101
def segment
  'Boleto Bancário'
end
valid?() click to toggle source
# File lib/verificador_boleto_br/slip/bank/validity.rb, line 76
def valid?
  valid_without_global? && global_validity
end
valid_without_global?() click to toggle source
# File lib/verificador_boleto_br/slip/bank/validity.rb, line 80
def valid_without_global?
  block_1_validity && block_2_validity && block_3_validity
end
value() click to toggle source
# File lib/verificador_boleto_br/slip/bank/validity.rb, line 39
def value
  value_in_cents.to_f / 100
end
value_in_cents() click to toggle source
# File lib/verificador_boleto_br/slip/bank/validity.rb, line 35
def value_in_cents
  clean_digitable_line[37..-1].to_i
end
verification_digit() click to toggle source
# File lib/verificador_boleto_br/slip/bank/validity.rb, line 31
def verification_digit
  clean_digitable_line[32].to_i
end