Class: Effective::Fee

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/effective/fee.rb

Constant Summary collapse

CHECKOUT_TYPES =
['Default', 'Applicant', 'Fee Payment']

Instance Method Summary collapse

Instance Method Details

#applicant_submit_fee?Boolean

Used by applicant.applicant_submit_fees

Returns:

  • (Boolean)


133
134
135
136
137
138
139
140
141
# File 'app/models/effective/fee.rb', line 133

def applicant_submit_fee?
  return true if parent.kind_of?(EffectiveMemberships.Applicant)

  return false if checkout_type == 'Fee Payment'
  return true if checkout_type == 'Applicant'

  # Default
  ['Applicant', 'Reinstatement'].include?(fee_type)
end

#custom_fee?Boolean

Returns:

  • (Boolean)


158
159
160
# File 'app/models/effective/fee.rb', line 158

def custom_fee?
  EffectiveMemberships.custom_fee_types.include?(fee_type)
end

#default_titleObject



162
163
164
165
166
167
168
169
170
# File 'app/models/effective/fee.rb', line 162

def default_title
  return nil unless period.present? && fee_type.present?

  [
    period.strftime('%Y'),
    category,
    EffectiveResources.et("effective_memberships.fees.#{fee_type.parameterize.underscore}")
  ].join(' ')
end

#early?Boolean

Returns:

  • (Boolean)


101
102
103
104
# File 'app/models/effective/fee.rb', line 101

def early?
  return false if purchased?
  EffectiveMemberships.Registrar.early_fee_date_range(period: period).cover?(Time.zone.now)
end

#fee_payment_fee?Boolean

Returns:

  • (Boolean)


143
144
145
146
147
148
149
150
151
# File 'app/models/effective/fee.rb', line 143

def fee_payment_fee?
  return false if parent.kind_of?(EffectiveMemberships.Applicant)

  return false if checkout_type == 'Applicant'
  return true if checkout_type == 'Fee Payment'

  # Default
  ['Applicant', 'Reinstatement'].exclude?(fee_type)
end

#late?Boolean

Returns:

  • (Boolean)


106
107
108
109
110
111
112
113
114
115
116
117
# File 'app/models/effective/fee.rb', line 106

def late?
  return false if late_on.blank?
  return false if purchased?

  now = Time.zone.now

  if(duration = EffectiveMemberships.Registrar.min_late_duration).present?
    return false if ((created_at || now) + duration > now)
  end

  late_on <= now.to_date
end

#membership_period_fee?Boolean

Will advance a membership.fees_paid_through_year value when purchased

Returns:

  • (Boolean)


154
155
156
# File 'app/models/effective/fee.rb', line 154

def membership_period_fee?
  ['Prorated', 'Renewal'].include?(fee_type)
end

#not_in_good_standing?Boolean

Returns:

  • (Boolean)


119
120
121
122
123
124
125
126
127
128
129
130
# File 'app/models/effective/fee.rb', line 119

def not_in_good_standing?
  return false if not_in_good_standing_on.blank?
  return false if purchased?

  now = Time.zone.now

  if(duration = EffectiveMemberships.Registrar.min_not_in_good_standing_duration).present?
    return false if ((created_at || now) + duration > now)
  end

  not_in_good_standing_on <= now.to_date
end

#reportable_scopesObject

effective_reports



44
45
46
# File 'app/models/effective/fee.rb', line 44

def reportable_scopes
  { purchased: nil, not_purchased: nil }
end

#to_sObject



97
98
99
# File 'app/models/effective/fee.rb', line 97

def to_s
  title.presence || default_title()
end