diff --git a/app/helpers/contracts_helper.rb b/app/helpers/contracts_helper.rb index ccfff86..f387247 100644 --- a/app/helpers/contracts_helper.rb +++ b/app/helpers/contracts_helper.rb @@ -6,10 +6,9 @@ module ContractsHelper end end - def format_budget_for_deliverable(deliverable, total) - # TODO LATER: calculate amount used - if total > 0 - content_tag(:span, "0", :class => 'spent-amount') + + def format_budget_for_deliverable(deliverable, spent, total) + if total > 0 || spent > 0 + content_tag(:span, h(number_to_currency(spent, :unit => '')), :class => 'spent-amount') + " " + content_tag(:span, h(number_to_currency(total, :unit => '')), :class => 'total-amount') else diff --git a/app/views/contracts/show.html.erb b/app/views/contracts/show.html.erb index 8f3a82c..ccf4f2e 100644 --- a/app/views/contracts/show.html.erb +++ b/app/views/contracts/show.html.erb @@ -43,10 +43,10 @@ <%# TODO: Status %> <%= h deliverable.manager.try(:name) %> - <%= format_budget_for_deliverable(deliverable, deliverable.labor_budget_total) %> + <%= format_budget_for_deliverable(deliverable, deliverable.labor_budget_spent, deliverable.labor_budget_total) %> - <%= format_budget_for_deliverable(deliverable, deliverable.overhead_budget_total) %> + <%= format_budget_for_deliverable(deliverable, deliverable.overhead_spent, deliverable.overhead_budget_total) %> --- <%= link_to(l(:button_edit), edit_contract_deliverable_path(@project, resource, deliverable), :class => 'icon icon-edit') %> diff --git a/test/integration/contracts_show_test.rb b/test/integration/contracts_show_test.rb index 3a89e43..507d4b9 100644 --- a/test/integration/contracts_show_test.rb +++ b/test/integration/contracts_show_test.rb @@ -4,7 +4,7 @@ class ContractsShowTest < ActionController::IntegrationTest include Redmine::I18n def setup - @project = Project.generate!(:identifier => 'main') + @project = Project.generate!(:identifier => 'main').reload @contract = Contract.generate!(:project => @project) end @@ -92,4 +92,72 @@ class ContractsShowTest < ActionController::IntegrationTest end end + + should "show the total labor budget spent for a Deliverable" do + configure_overhead_plugin + + @manager = User.generate! + + @deliverable1 = FixedDeliverable.generate!(:contract => @contract, :manager => @manager) + OverheadBudget.generate!(:deliverable => @deliverable1, + :hours => 100, + :budget => 4000.5) + + @issue1 = Issue.generate_for_project!(@project) + @time_entry1 = TimeEntry.generate!(:issue => @issue1, + :project => @project, + :activity => @billable_activity, + :spent_on => Date.today, + :hours => 10, + :user => @manager) + + @rate = Rate.generate!(:project => @project, + :user => @manager, + :date_in_effect => Date.yesterday, + :amount => 100) + + @deliverable1.issues << @issue1 + + assert_equal 1, @deliverable1.issues.count + + visit_contract_page(@contract) + assert_select "table#deliverables" do + assert_select "td.labor", :text => /1,000.00/ + end + + end + + should "show the total overhead budget spent for a Deliverable" do + configure_overhead_plugin + + @manager = User.generate! + + @deliverable1 = FixedDeliverable.generate!(:contract => @contract, :manager => @manager) + OverheadBudget.generate!(:deliverable => @deliverable1, + :hours => 100, + :budget => 4000.5) + + @issue1 = Issue.generate_for_project!(@project) + @time_entry1 = TimeEntry.generate!(:issue => @issue1, + :project => @project, + :activity => @non_billable_activity, + :spent_on => Date.today, + :hours => 20, + :user => @manager) + + @rate = Rate.generate!(:project => @project, + :user => @manager, + :date_in_effect => Date.yesterday, + :amount => 100) + + @deliverable1.issues << @issue1 + + assert_equal 1, @deliverable1.issues.count + + visit_contract_page(@contract) + assert_select "table#deliverables" do + assert_select "td.overhead", :text => /2,000.00/ + end + + end end