Sha256: d426d222fd80f7128b4c5ef17794db5e24541f50c7b836d0b69a3eb798b424ce

Contents?: true

Size: 800 Bytes

Versions: 1

Compression:

Stored size: 800 Bytes

Contents

require "active_model"

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

      attr_accessor :company_name, :date

      validates :company_name, presence: true, length: { maximum: 40 }
      validates :date, presence: true

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


      def to_s
        [
          "BF", # marks the beginning of file
          formatted_company_name,
          formatted_date,
        ].join
      end

      private

      def formatted_company_name
        String(company_name).upcase.ljust 40
      end

      def formatted_date
        date.strftime "%Y%m%d"
      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/header.rb