Compare commits
3
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7bfe9932e4 | ||
|
|
d574e522a9 | ||
|
|
d2e96821bb |
@@ -23,6 +23,8 @@ Dispatcher.to_prepare do
|
|||||||
require_dependency 'enumeration'
|
require_dependency 'enumeration'
|
||||||
require_dependency 'time_entry_activity'
|
require_dependency 'time_entry_activity'
|
||||||
TimeEntryActivity.send(:include, OverheadTimeEntryActivityPatch)
|
TimeEntryActivity.send(:include, OverheadTimeEntryActivityPatch)
|
||||||
|
require_dependency 'project'
|
||||||
|
Project.send(:include, RedmineOverhead::Patches::ProjectPatch)
|
||||||
end
|
end
|
||||||
|
|
||||||
require 'overhead_budget_hook'
|
require 'overhead_budget_hook'
|
||||||
|
|||||||
@@ -59,14 +59,18 @@ class OverheadTimesheetHook < Redmine::Hook::ViewListener
|
|||||||
billable_options = context[:params][:timesheet][:billable]
|
billable_options = context[:params][:timesheet][:billable]
|
||||||
activities = []
|
activities = []
|
||||||
|
|
||||||
if billable_options.include?("billable")
|
if billable_options.include?("billable") && context[:timesheet].projects.present?
|
||||||
activities << TimeEntryActivity.find_billable_activities
|
context[:timesheet].projects.each do |project|
|
||||||
|
activities << project.billable_activities
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if billable_options.include?("overhead")
|
if billable_options.include?("overhead") && context[:timesheet].projects.present?
|
||||||
activities << TimeEntryActivity.find_overhead_activities
|
context[:timesheet].projects.each do |project|
|
||||||
|
activities << project.non_billable_activities
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
# Overrides the activities directly
|
||||||
context[:timesheet].activities = activities.flatten.uniq.compact.collect(&:id).sort unless activities.empty?
|
context[:timesheet].activities = activities.flatten.uniq.compact.collect(&:id).sort unless activities.empty?
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -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
|
||||||
Reference in New Issue
Block a user