class NFE

Public Class Methods

digit(key44) click to toggle source
# File lib/nfe.rb, line 8
def self.digit(key44)
        dig = key44.split("").last.to_i
        key = key44.split("")[0..42].map(&:to_i)
        multipliers = ([2,3,4,5,6,7,8,9] * 6).reverse
        multipliers.shift(5)

        key_multiplied = []
        key[0..key.size-1].size.times do |index|
                key_multiplied << key[index] * multipliers[index]
        end
        rest = key_multiplied.sum % 11
        return 0 if rest == 0 || rest == 1
        11 - rest
end
generate() click to toggle source
# File lib/nfe.rb, line 23
def self.generate
        randon_digits_valid = false
        while !randon_digits_valid do
                randon_digits = 43.times.map{ Random.rand(0..9) }.join
                randon_digits_valid = digit([randon_digits, 0].join)
        end
        [randon_digits, digit([randon_digits, 0].join)].join
end
valid?(key44) click to toggle source
# File lib/nfe.rb, line 2
def self.valid?(key44)
        return false if key44.blank?
        dig = key44.split("").last.to_i
        dig == digit(key44)
end