Sha256: 6170fbd701898b07145d4ef839ddf176a5687c306286ac4e0b6325a8ee88eb5d

Contents?: true

Size: 1.78 KB

Versions: 37

Compression:

Stored size: 1.78 KB

Contents

  class Collection < ActiveRecord::Base
  include DateExpander

  expand_date_from :collected_at

  has_paper_trail

  SOURCE_INNER  = 0
  SOURCE_IMPORT = 1

  #
  # RELATIONS
  #
  belongs_to :terminal
  belongs_to :agent

  #
  # VALIDATIONS
  #
  validates :terminal, :presence => true, :if => lambda{|x| x.source == SOURCE_INNER }
  validates :agent, :presence => true, :if => lambda{|x| x.source == SOURCE_INNER }
  validates :collected_at, :presence => true

  validate do
    errors.add(:session_ids, :not_an_array) unless session_ids.is_a?(Array)
    errors.add(:banknotes, :not_a_hash) unless banknotes.is_a?(Hash)
  end

  #
  # MODIFICATIONS
  #
  serialize :banknotes
  serialize :session_ids

  before_validation do
    self.agent = terminal.agent unless terminal.blank?
    self.session_ids ||= []
    self.banknotes ||= {}

    return unless session_ids.is_a?(Array)
    return unless banknotes.is_a?(Hash)

    payments = Payment.where(:session_id => session_ids)

    self.cash_sum = banknotes.collect{|k,v| k.to_i*v.to_i}.sum
    self.payments_sum = payments.map{|x| x.paid_amount || 0}.sum
    self.payments_count = session_ids.count
    self.approved_payments_sum = payments.select{|x| x.approved?}.map{|x| x.paid_amount || 0}.sum
    self.approved_payments_count = payments.select{|x| x.approved?}.count
    self.cash_payments_count = payments.select{|x| !x.cashless?}.count
    self.cashless_payments_count = payments.select{|x| x.cashless?}.count
  end

  after_create do
    unless terminal.blank?
      if terminal.collected_at.blank? || self.collected_at > terminal.collected_at
        terminal.update_attribute(:collected_at, self.collected_at)
      end
    end

    unless session_ids.blank?
      Payment.where(:foreign_id => session_ids).update_all(:collection_id => id)
    end
  end
end

Version data entries

37 entries across 37 versions & 1 rubygems

Version Path
smartkiosk-server-0.12.1 app/models/collection.rb
smartkiosk-server-0.12 app/models/collection.rb
smartkiosk-server-0.11.11 app/models/collection.rb
smartkiosk-server-0.11.10 app/models/collection.rb
smartkiosk-server-0.11.9 app/models/collection.rb
smartkiosk-server-0.11.8 app/models/collection.rb
smartkiosk-server-0.11.7 app/models/collection.rb
smartkiosk-server-0.11.6 app/models/collection.rb
smartkiosk-server-0.11.5 app/models/collection.rb
smartkiosk-server-0.11.4 app/models/collection.rb
smartkiosk-server-0.11.3 app/models/collection.rb
smartkiosk-server-0.11.2 app/models/collection.rb
smartkiosk-server-0.11.1 app/models/collection.rb
smartkiosk-server-0.11 app/models/collection.rb
smartkiosk-server-0.10.19 app/models/collection.rb
smartkiosk-server-0.10.18 app/models/collection.rb
smartkiosk-server-0.10.17 app/models/collection.rb
smartkiosk-server-0.10.16 app/models/collection.rb
smartkiosk-server-0.10.15 app/models/collection.rb
smartkiosk-server-0.10.14 app/models/collection.rb