3 Commits

3 changed files with 52 additions and 5 deletions

View File

@@ -23,6 +23,8 @@ Dispatcher.to_prepare do
require_dependency 'enumeration'
require_dependency 'time_entry_activity'
TimeEntryActivity.send(:include, OverheadTimeEntryActivityPatch)
require_dependency 'project'
Project.send(:include, RedmineOverhead::Patches::ProjectPatch)
end
require 'overhead_budget_hook'

View File

@@ -59,14 +59,18 @@ class OverheadTimesheetHook < Redmine::Hook::ViewListener
billable_options = context[:params][:timesheet][:billable]
activities = []
if billable_options.include?("billable")
activities << TimeEntryActivity.find_billable_activities
if billable_options.include?("billable") && context[:timesheet].projects.present?
context[:timesheet].projects.each do |project|
activities << project.billable_activities
end
end
if billable_options.include?("overhead")
activities << TimeEntryActivity.find_overhead_activities
if billable_options.include?("overhead") && context[:timesheet].projects.present?
context[:timesheet].projects.each do |project|
activities << project.non_billable_activities
end
end
# Overrides the activities directly
context[:timesheet].activities = activities.flatten.uniq.compact.collect(&:id).sort unless activities.empty?
end
end

View File

@@ -0,0 +1,41 @@
module RedmineOverhead
module Patches
module ProjectPatch
def self.included(base)
base.extend(ClassMethods)
base.send(:include, InstanceMethods)
base.class_eval do
unloadable
end
end
module ClassMethods
end
module InstanceMethods
def billable_activities
activities_sorted_by_billable[:billable]
end
def non_billable_activities
activities_sorted_by_billable[:non_billable]
end
private
def activities_sorted_by_billable
split_activities = activities.partition do |activity|
activity.billable?
end
{
:billable => split_activities.first,
:non_billable => split_activities.second
}
end
end
end
end
end