Sha256: b385735c7359b70a277f0f825dd639d41e138c29b049f587744aed29b6a2db06

Contents?: true

Size: 802 Bytes

Versions: 3

Compression:

Stored size: 802 Bytes

Contents

require 'active_model'

module AUB
  module Payroll
    class EPFFile::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

3 entries across 3 versions & 1 rubygems

Version Path
aub-payroll-1.1.0 lib/aub/payroll/epf_file/header.rb
aub-payroll-1.0.1 lib/aub/payroll/epf_file/header.rb
aub-payroll-1.0.0 lib/aub/payroll/epf_file/header.rb