class BrDocuments::IE::SP
Protected Instance Methods
format_ie(number)
click to toggle source
# File lib/br_documents/ie/sp.rb, line 11 def format_ie(number) if number.gsub(/(\-)|(\.)|(\/)/, '').length == 13 number.sub(/(\w{1})(\d{8})(\d{1})(\d{3})/, '\\1-\\2.\\3/\\4') else number.sub(/(\d{3})(\d{3})(\d{3})(\d{3})/, '\\1.\\2.\\3.\\4') end end
valid_check_digit?()
click to toggle source
# File lib/br_documents/ie/sp.rb, line 24 def valid_check_digit? if @number[0] == 'P' valid_rural_producer_digital_check? else valid_standard_digital_check? end end
valid_format?()
click to toggle source
# File lib/br_documents/ie/sp.rb, line 19 def valid_format? regex = /^(\d{3}\.\d{3}\.\d{3}\.\d{3})$|^(\d{12})$|^(P-\d{8}\.\d{1}\/\d{3})$/ regex.match(@number).present? end
Private Instance Methods
generate_check_digit(weights)
click to toggle source
# File lib/br_documents/ie/sp.rb, line 52 def generate_check_digit(weights) sum = reduce_weights(@number, weights) mod = sum % 11 mod.to_s[-1] end
valid_rural_producer_digital_check?()
click to toggle source
# File lib/br_documents/ie/sp.rb, line 46 def valid_rural_producer_digital_check? @number.gsub!(/[\.\/P-]/, '') weight9 = [1, 3, 4, 5, 6, 7, 8, 10] @number[8] == generate_check_digit(weight9) end
valid_standard_digital_check?()
click to toggle source
# File lib/br_documents/ie/sp.rb, line 34 def valid_standard_digital_check? @number.gsub!(/[\.\/P-]/, '') weight1 = [1, 3, 4, 5, 6, 7, 8, 10] weight2 = [3, 2, 10, 9, 8, 7, 6, 5, 4, 3, 2] dc1 = generate_check_digit(weight1) dc2 = generate_check_digit(weight2) (@number[8] == dc1) and (@number[11] == dc2) end