if children.any?
child_with_total_estimated_hours = children.select {|c| c.total_estimated_hours.to_f > 0.0}
if child_with_total_estimated_hours.any?
- average = child_with_total_estimated_hours.map(&:total_estimated_hours).sum.to_d / child_with_total_estimated_hours.count
+ average = child_with_total_estimated_hours.sum(&:total_estimated_hours).to_d / child_with_total_estimated_hours.count
else
average = 1.0.to_d
end
- done = children.map do |c|
+ done = children.sum do |c|
estimated = (c.total_estimated_hours || 0.0).to_d
estimated = average unless estimated > 0.0
ratio = c.closed? ? 100 : (c.done_ratio || 0)
estimated * ratio
- end.sum
+ end
progress = done / (average * children.count)
p.done_ratio = progress.floor
end
# progress on it's versions.
def completed_percent(options={:include_subprojects => false})
if options.delete(:include_subprojects)
- total = self_and_descendants.collect(&:completed_percent).sum
+ total = self_and_descendants.sum(&:completed_percent)
total / self_and_descendants.count
else
if versions.count > 0
- total = versions.collect(&:completed_percent).sum
+ total = versions.sum(&:completed_percent)
total / versions.count
else