Sha256: 8223ff019721deef89fad5169a7c153da34c0ba3ee3a868a67c911ddd7c7dd39

Contents?: true

Size: 1.15 KB

Versions: 4

Compression:

Stored size: 1.15 KB

Contents

# encoding: utf-8
module SEPA
  class Transaction
    include ActiveModel::Validations
    extend Converter

    attr_accessor :name, :iban, :bic, :amount, :reference, :remittance_information, :requested_date, :batch_booking
    convert :name, :reference, :remittance_information, to: :text
    convert :amount, to: :decimal

    validates_length_of :name, within: 1..70
    validates_length_of :reference, within: 1..35, allow_nil: true
    validates_length_of :remittance_information, within: 1..140, allow_nil: true
    validates_numericality_of :amount, greater_than: 0
    validates_presence_of :requested_date
    validates_inclusion_of :batch_booking, :in => [true, false]
    validates_with BICValidator, IBANValidator

    validate do |t|
      if t.requested_date.is_a?(Date)
        errors.add(:requested_date, 'is not in the future') if t.requested_date <= Date.today
      end
    end

    def initialize(attributes = {})
      attributes.each do |name, value|
        send("#{name}=", value)
      end

      self.requested_date ||= Date.today.next
      self.reference ||= 'NOTPROVIDED'
      self.batch_booking = true if self.batch_booking.nil?
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
sepa_king-0.1.0 lib/sepa_king/transaction.rb
sepa_king-0.0.7 lib/sepa_king/transaction.rb
sepa_king-0.0.6 lib/sepa_king/transaction.rb
sepa_king-0.0.5 lib/sepa_king/transaction.rb