From 4703583a506bfdeef69a03b2b15b491c9921f699 Mon Sep 17 00:00:00 2001 From: Eric Davis Date: Wed, 7 Jul 2010 15:19:29 -0700 Subject: [PATCH] [#4183] Implemented Contract#labor_budget --- app/models/contract.rb | 7 ++++++- test/unit/contract_test.rb | 13 ++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/app/models/contract.rb b/app/models/contract.rb index 1929aab..f8360e0 100644 --- a/app/models/contract.rb +++ b/app/models/contract.rb @@ -29,7 +29,7 @@ class Contract < ActiveRecord::Base attr_accessible :po_number attr_accessible :details - [:status, :contract_type, :labor_spent, :labor_budget, :overhead_spent, + [:status, :contract_type, :labor_spent, :overhead_spent, :overhead_budget, :fixed_spent, :fixed_budget, :total_spent, :total_budget, :markup_spent, :markup_budget, :profit_spent, :profit_budget, :discount_spent, :discount_budget, :client_point_of_contact, @@ -37,6 +37,11 @@ class Contract < ActiveRecord::Base ].each do |mthd| define_method(mthd) { "TODO" } end + + # OPTIMIZE: N+1 + def labor_budget + deliverables.inject(0) {|total, deliverable| total += deliverable.labor_budget_total } + end PaymentTerms = { :net_0 => :text_payment_terms_net_0, diff --git a/test/unit/contract_test.rb b/test/unit/contract_test.rb index fc36b0a..05501ef 100644 --- a/test/unit/contract_test.rb +++ b/test/unit/contract_test.rb @@ -32,5 +32,16 @@ class ContractTest < ActiveSupport::TestCase assert_equal false, @contract.executed end - + + context "#labor_budget" do + should "sum all of the labor budgets of the Deliverables" do + contract = Contract.generate! + contract.deliverables << @deliverable_1 = FixedDeliverable.generate! + LaborBudget.generate!(:deliverable => @deliverable_1, :budget => 100) + contract.deliverables << @deliverable_2 = FixedDeliverable.generate! + LaborBudget.generate!(:deliverable => @deliverable_2, :budget => 100) + + assert_equal 200, contract.labor_budget + end + end end