Module: EmployeeTimeOffRollover
- Extended by:
- ActiveSupport::Concern
- Included in:
- EmployeeTimeOffAccruals
- Defined in:
- app/models/concerns/employee_time_off_rollover.rb
Overview
Year-end rollover, expiry, and policy-transition logic for time-off.
Instance Method Summary collapse
- #process_policy_transitions ⇒ Object
- #process_rollover_and_expiry(simulate_date: nil, send_email: true) ⇒ Object
Instance Method Details
#process_policy_transitions ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'app/models/concerns/employee_time_off_rollover.rb', line 19 def process_policy_transitions time_off_policy_assignments.includes(:time_off_policy).find_each do |assignment| current_policy = assignment.time_off_policy employee = assignment.employee next_policy = TimeOffPolicy.find_by(parent_policy_id: current_policy.id) next unless next_policy && current_policy.id != next_policy.id && eligible_for_next_policy?(employee, next_policy) next if time_off_policy_assignments.exists?(time_off_policy_id: next_policy.id) assign_next_policy(next_policy) end end |
#process_rollover_and_expiry(simulate_date: nil, send_email: true) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 |
# File 'app/models/concerns/employee_time_off_rollover.rb', line 7 def process_rollover_and_expiry(simulate_date: nil, send_email: true) time_off_policy_assignments.includes(:time_off_policy).find_each do |assignment| policy = assignment.time_off_policy time_off_type = policy.time_off_type add_end_of_year_partial_accrual(assignment:, policy:, time_off_type:, simulate_date:) if simulate_date && policy.accrual_frequency&.downcase == 'weekly' process_rollover(policy, time_off_type, simulate_date:, send_email: send_email && !simulate_date) process_expiry(policy, time_off_type) end end |