Sha256: 6c7da610e7a701f7cd76e77c7d1cb9c94073ad8db8c284fe5d55d108f35f9b79

Contents?: true

Size: 1.14 KB

Versions: 9

Compression:

Stored size: 1.14 KB

Contents

require_relative "base"
require_relative "../commons/mod11"

module BrDocuments
  module IE
    class AP < Base
      include Commons::Mod11

      private
      def format_ie(number)
        number
      end

      def valid_format?
        regex = /(\d{9})$/
        regex.match(@number).present?
      end

      def valid_digital_check?
        weight = [9, 8, 7, 6, 5, 4, 3, 2]
        detect_range_digits
        @number[-1].eql? generate_digital_check(@number, weight).to_s
      end

      def detect_range_digits
        number = @number[0, 8]
        if number.to_i >= 3000001 and number.to_i <= 3017000
          @p = 5
          @d = 0
        else
          if number.to_i >= 3017001 and number.to_i <= 3019022
            @p = 9
            @d = 1
          else
            @p = 0
            @d = 0
          end
        end
      end

      def generate_digital_check(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
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
br_documents-0.1.3 lib/br_documents/ie/ap.rb
br_documents-0.1.2 lib/br_documents/ie/ap.rb
br_documents-0.1.1 lib/br_documents/ie/ap.rb
br_documents-0.1.0 lib/br_documents/ie/ap.rb
br_documents-0.0.15 lib/br_documents/ie/ap.rb
br_documents-0.0.14 lib/br_documents/ie/ap.rb
br_documents-0.0.13 lib/br_documents/ie/ap.rb
br_documents-0.0.12 lib/br_documents/ie/ap.rb
br_documents-0.0.11 lib/br_documents/ie/ap.rb