Sha256: cd610dc765c557c69845f56d9da5b1dbeab1620d723e913903c7e4af709bc029

Contents?: true

Size: 763 Bytes

Versions: 1

Compression:

Stored size: 763 Bytes

Contents

require "active_model"

module AUB
  module Payroll
    class File::Row
      include ActiveModel::Model

      attr_accessor :account_number, :amount

      validates :account_number, presence: true, length: { is: 12 }
      validates :amount, numericality: { greater_than: 0, less_than_or_equal_to: 99_999_999_999.99 }

      # @param [String] account_number:
      # @param [BigDecimal] amount:
      def initialize(*)
        super
        raise Errors::Invalid, errors.full_messages.to_sentence unless valid?
      end


      def to_s
        [
          "01",
          account_number,
          formatted_amount,
          "0" * 22
        ].join
      end

      private

      def formatted_amount
        "%014.2f" % amount
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
aub-payroll-0.1.0 lib/aub/payroll/file/row.rb