class BrDocuments::IE::AP
Public Instance Methods
valid?()
click to toggle source
Calls superclass method
# File lib/br_documents/ie/ap.rb, line 9 def valid? @number.to_s.size == 9 && super end
Protected Instance Methods
format_ie(number)
click to toggle source
# File lib/br_documents/ie/ap.rb, line 15 def format_ie(number) number end
valid_check_digit?()
click to toggle source
# File lib/br_documents/ie/ap.rb, line 24 def valid_check_digit? return false if number_to_calculate_digits < 3_000_001 weight = [9, 8, 7, 6, 5, 4, 3, 2] detect_range_digits @number[-1] == generate_check_digit(@number, weight).to_s end
valid_format?()
click to toggle source
# File lib/br_documents/ie/ap.rb, line 19 def valid_format? regex = /(\d{9})$/ regex.match(@number).present? end
Private Instance Methods
detect_range_digits()
click to toggle source
rubocop:disable Metrics/MethodLength
# File lib/br_documents/ie/ap.rb, line 35 def detect_range_digits number = number_to_calculate_digits if number >= 3_000_001 && number <= 3_017_000 @p = 5 @d = 0 elsif number >= 3_017_001 && number <= 3_019_022 @p = 9 @d = 1 elsif number >= 3_019_023 @p = 0 @d = 0 end end
generate_check_digit(values, weights)
click to toggle source
# File lib/br_documents/ie/ap.rb, line 55 def generate_check_digit(values, weights) sum = reduce_weights(values, weights) sum += @p mod = sum % 11 digital_check = 11 - mod digital_check = 0 if digital_check == 10 digital_check = @d if digital_check == 11 digital_check end
number_to_calculate_digits()
click to toggle source
rubocop:enable Metrics/MethodLength
# File lib/br_documents/ie/ap.rb, line 51 def number_to_calculate_digits @number[0, 8].to_i end