Skip to content

Commit

Permalink
Exclude issue without baseline issue from EV calculation
Browse files Browse the repository at this point in the history
  • Loading branch information
nfecastro committed Nov 7, 2014
1 parent 0940683 commit be7dbe1
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 16 deletions.
18 changes: 9 additions & 9 deletions lib/redmine_evm/patches/project_patch.rb
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ def self.included(base) # :nodoc:
end
end

module ClassMethods
module ClassMethods
end

module ProjectInstanceMethods
Expand Down Expand Up @@ -46,7 +46,7 @@ def actual_cost_by_week baseline

final_date = [maximum_chart_date(baseline), end_date].compact.max
date_today = Date.today
if final_date > date_today
if final_date > date_today
final_date = date_today
end

Expand All @@ -68,9 +68,9 @@ def earned_value_by_week baseline_id
earned_value_by_week = Hash.new { |h, k| h[k] = 0 }
baselines.find(baseline_id).update_hours ? update_hours = true : update_hours = false
issues.each do |issue|
next if issue.baseline_issues.find_by_baseline_id(baseline_id).try(:exclude)
next if issue.baseline_issues.find_by_baseline_id(baseline_id).try(:exclude) || issue.baseline_issues.find_by_baseline_id(baseline_id).nil?
issue.days.each do |day|
earned_value_by_week[day] += issue.hours_per_day(update_hours, baseline_id) * issue.done_ratio/100.0
earned_value_by_week[day] += issue.hours_per_day(update_hours, baseline_id) * issue.done_ratio/100.0
end
end
ordered_earned_value = order_earned_value earned_value_by_week
Expand All @@ -80,14 +80,14 @@ def earned_value_by_week baseline_id
def earned_value baseline_id
sum_earned_value = 0
issues.each do |issue|
next if issue.baseline_issues.where(original_issue_id: issue.id, baseline_id: baseline_id).first.try(:exclude)
next if issue.baseline_issues.where(original_issue_id: issue.id, baseline_id: baseline_id).first.try(:exclude) || issue.baseline_issues.find_by_baseline_id(baseline_id).nil?
if baselines.find(baseline_id).update_hours
if issue.closed?
next if issue.spent_hours == 0
sum_earned_value += issue.spent_hours * (issue.done_ratio / 100.0)
sum_earned_value += issue.spent_hours * (issue.done_ratio / 100.0)
else
next if issue.estimated_hours.nil?
sum_earned_value += issue.estimated_hours * (issue.done_ratio / 100.0)
sum_earned_value += issue.estimated_hours * (issue.done_ratio / 100.0)
end
else
next if issue.estimated_hours.nil?
Expand Down Expand Up @@ -155,9 +155,9 @@ def extend_earned_value_to_final_date ordered_earned_value, baseline_id
unless ordered_earned_value.empty?
if ordered_earned_value.keys.last+1 <= dat
(ordered_earned_value.keys.last+1..dat).each do |date|
ordered_earned_value[date] = 0 unless ordered_earned_value[date]
ordered_earned_value[date] = 0 unless ordered_earned_value[date]
end
end
end
end
ordered_earned_value.each_with_object({}) { |(key, v), h| h[key] = v + (h.values.last||0) }
end
Expand Down
15 changes: 8 additions & 7 deletions lib/redmine_evm/patches/version_patch.rb
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,13 @@ def actual_cost_by_week baseline

final_date = [maximum_chart_date(baseline), end_date].compact.max
date_today = Date.today
if final_date > date_today
if final_date > date_today
final_date = date_today
end


summed_time_entries = self.summed_time_entries(baseline)

unless summed_time_entries.empty?
(start_date..final_date.to_date).each do |key|
unless summed_time_entries[key].nil?
Expand All @@ -65,12 +65,13 @@ def earned_value_by_week baseline_id
earned_value_by_week = Hash.new { |h, k| h[k] = 0 }
baseline_versions.find_by_baseline_id(baseline_id).update_hours ? update_hours = true : update_hours = false
fixed_issues.each do |fixed_issue|
next if fixed_issue.baseline_issues.find_by_baseline_id(baseline_id).nil?
fixed_issue.days.each do |day|
earned_value_by_week[day] += fixed_issue.hours_per_day(update_hours, baseline_id) * fixed_issue.done_ratio/100.0
earned_value_by_week[day] += fixed_issue.hours_per_day(update_hours, baseline_id) * fixed_issue.done_ratio/100.0
end
end
ordered_earned_value = order_earned_value earned_value_by_week
extend_earned_value_to_final_date ordered_earned_value, baseline_id
extend_earned_value_to_final_date ordered_earned_value, baseline_id
end

def data_for_chart baseline
Expand Down Expand Up @@ -130,13 +131,13 @@ def extend_earned_value_to_final_date ordered_earned_value, baseline_id
unless ordered_earned_value.empty?
if ordered_earned_value.keys.last+1 <= dat
(ordered_earned_value.keys.last+1..dat).each do |date|
ordered_earned_value[date] = 0 unless ordered_earned_value[date]
ordered_earned_value[date] = 0 unless ordered_earned_value[date]
end
end
end
end
ordered_earned_value.each_with_object({}) { |(key, v), h| h[key] = v + (h.values.last||0) }
end
end
end
end
end

Expand Down

0 comments on commit be7dbe1

Please sign in to comment.