[#4555] Include the spent FixedBudget in Hourly and Retainers total_spent

This commit is contained in:
Eric Davis
2010-09-23 10:14:12 -07:00
parent 0a80a54be3
commit ed9f73e8a0
5 changed files with 19 additions and 11 deletions
+2 -1
View File
@@ -37,7 +37,8 @@ class HourlyDeliverable < Deliverable
total total
} }
return hours * contract.billable_rate fixed_budget_amount = fixed_budget_total_spent(date) + fixed_markup_budget_total_spent(date)
return (hours * contract.billable_rate) + fixed_budget_amount
end end
# Block setting the total on HourlyDeliverables # Block setting the total on HourlyDeliverables
+3 -1
View File
@@ -198,7 +198,9 @@ class RetainerDeliverable < HourlyDeliverable
total total
} }
return hours * contract.billable_rate fixed_budget_amount = fixed_budget_total_spent(date) + fixed_markup_budget_total_spent(date)
return (hours * contract.billable_rate) + fixed_budget_amount
when :out when :out
0 0
else else
+2 -2
View File
@@ -250,8 +250,8 @@ class ContractTest < ActiveSupport::TestCase
@deliverable_2.fixed_budgets << FixedBudget.spawn(:budget => 200, :markup => '$100', :paid => true) @deliverable_2.fixed_budgets << FixedBudget.spawn(:budget => 200, :markup => '$100', :paid => true)
assert_equal 875, @deliverable_1.profit_left assert_equal 875, @deliverable_1.profit_left
assert_equal 825, @deliverable_2.profit_left assert_equal 1125, @deliverable_2.profit_left
assert_equal 1700, contract.profit_left assert_equal 2000, contract.profit_left
end end
end end
+5 -2
View File
@@ -32,7 +32,7 @@ class HourlyDeliverableTest < ActiveSupport::TestCase
end end
context "#total_spent" do context "#total_spent" do
should "be equal to the number of hours used multipled by the contract rate" do should "be equal to the number of hours used multipled by the contract rate and adding the fixed budget and markup spent" do
configure_overhead_plugin configure_overhead_plugin
contract = Contract.generate!(:billable_rate => 150.0) contract = Contract.generate!(:billable_rate => 150.0)
@@ -46,8 +46,11 @@ class HourlyDeliverableTest < ActiveSupport::TestCase
TimeEntry.generate!(:hours => 15, :issue => @issue1, :project => @project, TimeEntry.generate!(:hours => 15, :issue => @issue1, :project => @project,
:activity => @billable_activity, :activity => @billable_activity,
:user => @developer) :user => @developer)
# Only paid fixed budgets counted
d.fixed_budgets << FixedBudget.generate!(:budget => '$100', :markup => '50%') # $50 markup
d.fixed_budgets << FixedBudget.generate!(:budget => '$100', :markup => '50%', :paid => true) # $50 markup
assert_equal 2250, d.total_spent assert_equal 2250 + 150, d.total_spent
end end
end end
+7 -5
View File
@@ -382,6 +382,10 @@ class RetainerDeliverableTest < ActiveSupport::TestCase
@deliverable = RetainerDeliverable.generate!(:start_date => '2010-01-01', :end_date => '2010-03-31', :contract => @contract) @deliverable = RetainerDeliverable.generate!(:start_date => '2010-01-01', :end_date => '2010-03-31', :contract => @contract)
@deliverable.labor_budgets << LaborBudget.spawn(:budget => 100, :hours => 10) @deliverable.labor_budgets << LaborBudget.spawn(:budget => 100, :hours => 10)
@deliverable.overhead_budgets << OverheadBudget.spawn(:budget => 100, :hours => 10) @deliverable.overhead_budgets << OverheadBudget.spawn(:budget => 100, :hours => 10)
# Only paid fixed budgets counted
@deliverable.fixed_budgets << FixedBudget.generate!(:budget => '$100', :markup => '50%') # $50 markup
@deliverable.fixed_budgets << FixedBudget.generate!(:budget => '$100', :markup => '50%', :paid => true) # $50 markup
@deliverable.save! @deliverable.save!
@manager = User.generate! @manager = User.generate!
@@ -410,14 +414,12 @@ class RetainerDeliverableTest < ActiveSupport::TestCase
:amount => 100) :amount => 100)
@deliverable.issues << @issue1 @deliverable.issues << @issue1
end end
context "with a empty period" do context "with a empty period" do
should "use all periods" do should "use all periods" do
# Labor used * contract rate # (Labor used * contract rate) + fixed
assert_equal (10+20) * 200, @deliverable.total_spent(nil) assert_equal ((10+20) * 200) + (150 * 3), @deliverable.total_spent(nil)
end end
end end
@@ -435,7 +437,7 @@ class RetainerDeliverableTest < ActiveSupport::TestCase
context "with a period in the retainer range" do context "with a period in the retainer range" do
should "filter the records" do should "filter the records" do
assert_equal 20 * 200, @deliverable.total_spent(Date.new(2010,2,1)) assert_equal (20 * 200) + 150, @deliverable.total_spent(Date.new(2010,2,1))
end end
end end
end end