[#4183] Implemented Contract#overhead_spent.

This commit is contained in:
Eric Davis committed 2010-07-13 13:27:06 -07:00
1 parent a9bae2e604
commit 7323537ea6
2 files changed
+39 -1

No files matched your search

+6 -1
View File
@@ -39,7 +39,6 @@ class Contract < ActiveRecord::Base
end end
[:labor_spent, [:labor_spent,
:overhead_spent,
:total_spent, :total_spent,
:profit_spent :profit_spent
].each do |mthd| ].each do |mthd|
@@ -56,6 +55,12 @@ class Contract < ActiveRecord::Base
deliverables.inject(0) {|total, deliverable| total += deliverable.overhead_budget_total } deliverables.inject(0) {|total, deliverable| total += deliverable.overhead_budget_total }
end end
# OPTIMIZE: N+1
# OPTIMIZE: also hits redmine_overhead which is known to be slow
def overhead_spent
deliverables.inject(0) {|total, deliverable| total += deliverable.overhead_spent }
end
# OPTIMIZE: N+1 # OPTIMIZE: N+1
def estimated_hour_budget def estimated_hour_budget
deliverables.inject(0) {|total, deliverable| total += deliverable.estimated_hour_budget_total } deliverables.inject(0) {|total, deliverable| total += deliverable.estimated_hour_budget_total }
+33
View File
@@ -57,6 +57,39 @@ class ContractTest < ActiveSupport::TestCase
end end
end end
context "#overhead_spent" do
setup do
configure_overhead_plugin
end
should "sum all of the overhead spent on the Deliverables" do
@project = Project.generate!
@manager = User.generate!
@role = Role.generate!
User.add_to_project(@manager, @project, @role)
@rate = Rate.generate!(:project => @project,
:user => @manager,
:date_in_effect => Date.yesterday,
:amount => 100)
contract = Contract.generate!
contract.deliverables << @deliverable_1 = FixedDeliverable.generate!
@deliverable_1.issues << @issue1 = Issue.generate_for_project!(@project)
TimeEntry.generate!(:hours => 10, :issue => @issue1, :project => @project,
:activity => @non_billable_activity,
:user => @manager)
contract.deliverables << @deliverable_2 = HourlyDeliverable.generate!
@deliverable_2.issues << @issue2 = Issue.generate_for_project!(@project)
TimeEntry.generate!(:hours => 10, :issue => @issue2, :project => @project,
:activity => @non_billable_activity,
:user => @manager)
assert_equal 2000, contract.overhead_spent
end
end
context "#estimated_hour_budget" do context "#estimated_hour_budget" do
should "sum all of the labor and overhead budgets of the Deliverables" do should "sum all of the labor and overhead budgets of the Deliverables" do
contract = Contract.generate! contract = Contract.generate!