Sha256: 5df191f5bbcd1ef87df90f52587e499f8553382cbf7831c811b276169df6150c

Contents?: true

Size: 726 Bytes

Versions: 2

Compression:

Stored size: 726 Bytes

Contents

require 'vesr/validation_digit_calculator'

module VESR
  class ReferenceBuilder
    def self.call(customer_id, invoice_id, esr_id)
      new(customer_id, invoice_id, esr_id).call
    end

    attr_reader :customer_id, :invoice_id, :esr_id

    def initialize(customer_id, invoice_id, esr_id)
      @customer_id = customer_id
      @invoice_id = invoice_id
      @esr_id = esr_id
    end

    def call
      "#{esr_id}#{formatted_customer_id}#{formatted_invoice_id}"
    end

    private

    def formatted_customer_id
      format "%0#{customer_id_length}i", customer_id
    end

    def customer_id_length
      19 - esr_id.to_s.length
    end

    def formatted_invoice_id
      format '%07i', invoice_id
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
vesr-1.1.1 lib/vesr/reference_builder.rb
vesr-1.1.0 lib/vesr/reference_builder.rb