Adding payments
This commit is contained in:
@@ -28,6 +28,11 @@ class Ability
|
||||
can :read, UserCertification
|
||||
end
|
||||
|
||||
# Accountants can manage all
|
||||
if user.accountant?
|
||||
can :manage, Payment
|
||||
end
|
||||
|
||||
# Admins can manage all
|
||||
if user.admin?
|
||||
can :manage, :all
|
||||
@@ -41,6 +46,7 @@ class Ability
|
||||
cannot :destroy, MacLog
|
||||
cannot :destroy, UserCertification
|
||||
cannot :destroy, DoorLog
|
||||
# no exception for destroying payments
|
||||
end
|
||||
# Define abilities for the passed in user here. For example:
|
||||
#
|
||||
|
||||
15
app/models/payment.rb
Normal file
15
app/models/payment.rb
Normal file
@@ -0,0 +1,15 @@
|
||||
class Payment < ActiveRecord::Base
|
||||
belongs_to :user
|
||||
attr_accessible :date, :user_id, :created_by
|
||||
|
||||
validates_presence_of :user_id, :date, :created_by
|
||||
validates_uniqueness_of :date, :scope => :user_id, :message => ' of payment already exists for this user.'
|
||||
|
||||
def human_date
|
||||
if date.year < DateTime.now.year
|
||||
date.strftime("%b %e, %y")
|
||||
else
|
||||
date.strftime("%b %e")
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -9,46 +9,103 @@ class User < ActiveRecord::Base
|
||||
:recoverable, :rememberable, :trackable, :validatable
|
||||
|
||||
# Setup accessible (or protected) attributes for your model
|
||||
attr_accessible :email, :password, :password_confirmation, :remember_me, :name, :admin, :instructor, :member, :emergency_name, :emergency_phone, :current_skills, :desired_skills, :waiver, :emergency_email, :phone, :payment_method, :orientation, :member_level, :certifications, :hidden, :marketing_source #TODO: make admin/instructor/member/etc not accessible
|
||||
attr_accessible :email, :password, :password_confirmation, :remember_me, :name, :admin, :instructor, :member, :emergency_name, :emergency_phone, :current_skills, :desired_skills, :waiver, :emergency_email, :phone, :payment_method, :orientation, :member_level, :certifications, :hidden, :marketing_source, :payee, :accountant #TODO: make admin/instructor/member/etc not accessible
|
||||
|
||||
has_many :cards
|
||||
has_many :user_certifications
|
||||
has_many :certifications, :through => :user_certifications
|
||||
has_many :payments
|
||||
|
||||
after_create :send_new_user_email
|
||||
|
||||
|
||||
def member_status
|
||||
output = ""
|
||||
|
||||
if self.member_level.to_i >= 1 then
|
||||
output = "<span class='hoverinfo' title='Inactive'>◌</span>"
|
||||
def name_with_payee_and_member_level
|
||||
if payee.blank? then
|
||||
"#{name} - #{member_level_string}"
|
||||
else
|
||||
"#{payee} for #{name} - #{member_level_string}"
|
||||
end
|
||||
|
||||
unless self.member.nil? then
|
||||
# 1 = inactive, show an X
|
||||
if self.member >= 10 then
|
||||
output = "<span class='hoverinfo' title='Volunteer'>◔</span>"
|
||||
# 25 or higher is paying, show a check
|
||||
end
|
||||
if self.member >= 25 then
|
||||
output = "<span class='hoverinfo' title='25'>◑</span>"
|
||||
end
|
||||
if self.member >= 50 then
|
||||
output = "<span class='hoverinfo' title='50'>◕</span>"
|
||||
end
|
||||
if self.member >= 100 then
|
||||
output = "<span class='hoverinfo' title='100'>●</span>"
|
||||
end
|
||||
|
||||
if self.member < self.member_level.to_i then
|
||||
output = "<span class='hoverinfo' title='Lapsed'>✗</span>"
|
||||
end
|
||||
end
|
||||
|
||||
return output
|
||||
end
|
||||
|
||||
def member_level_string
|
||||
case self.member_level.to_i
|
||||
when 0
|
||||
"None"
|
||||
when 1
|
||||
"Unable"
|
||||
when 10..24
|
||||
"Volunteer"
|
||||
when 25..49
|
||||
"Associate ($25)"
|
||||
when 50..99
|
||||
"Basic ($50)"
|
||||
when 100..999
|
||||
"Plus ($100)"
|
||||
end
|
||||
end
|
||||
|
||||
def member_status
|
||||
case self.member_level.to_i
|
||||
when 0
|
||||
if self.payments.count > 0 then
|
||||
2
|
||||
else
|
||||
-1
|
||||
end
|
||||
when 1
|
||||
1
|
||||
when 10..24
|
||||
10
|
||||
when 25..999
|
||||
if self.payments.count > 0 then
|
||||
if self.payments.last.date < (DateTime.now - 1.month)
|
||||
3
|
||||
else
|
||||
case self.member_level.to_i
|
||||
when 25..49
|
||||
25
|
||||
when 50..99
|
||||
50
|
||||
when 100..999
|
||||
100
|
||||
end
|
||||
end
|
||||
else
|
||||
return 0
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def member_status_symbol
|
||||
case self.member_level.to_i
|
||||
when 0
|
||||
if self.payments.count > 0 then
|
||||
"<span class='hoverinfo' title='Former Member'>:(</span>"
|
||||
else
|
||||
"<!-- Not a member -->"
|
||||
end
|
||||
when 1
|
||||
"Unable"
|
||||
when 10..24
|
||||
"<span class='hoverinfo' title='Volunteer'>◔</span>"
|
||||
when 25..999
|
||||
if self.payments.count > 0 then
|
||||
if self.payments.last.date < (DateTime.now - 1.month)
|
||||
"<span class='hoverinfo' title='Lapsed'>◌</span>"
|
||||
else
|
||||
case self.member_level.to_i
|
||||
when 25..49
|
||||
"<span class='hoverinfo' title='#{member_level_string}'>◑</span>"
|
||||
when 50..99
|
||||
"<span class='hoverinfo' title='#{member_level_string}'>◕</span>"
|
||||
when 100..999
|
||||
"<span class='hoverinfo' title='#{member_level_string}'>●</span>"
|
||||
end
|
||||
end
|
||||
else
|
||||
"<span class='hoverinfo' title='No Payments'>?</span>"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
|
||||
Reference in New Issue
Block a user