diff --git a/app/helpers/contracts_helper.rb b/app/helpers/contracts_helper.rb index fbea455..ccfff86 100644 --- a/app/helpers/contracts_helper.rb +++ b/app/helpers/contracts_helper.rb @@ -5,4 +5,15 @@ module ContractsHelper d.overhead_budgets.build if d.overhead_budgets.empty? end end + + def format_budget_for_deliverable(deliverable, total) + # TODO LATER: calculate amount used + if total > 0 + content_tag(:span, "0", :class => 'spent-amount') + + " " + + content_tag(:span, h(number_to_currency(total, :unit => '')), :class => 'total-amount') + else + '---' + end + end end diff --git a/app/models/deliverable.rb b/app/models/deliverable.rb index 6ed0369..56dde0b 100644 --- a/app/models/deliverable.rb +++ b/app/models/deliverable.rb @@ -32,7 +32,15 @@ class Deliverable < ActiveRecord::Base write_attribute(:total, v) end end - + + def labor_budget_total + labor_budgets.sum(:budget) + end + + def overhead_budget_total + overhead_budgets.sum(:budget) + end + if Rails.env.test? generator_for :title, :method => :next_title diff --git a/app/views/contracts/show.html.erb b/app/views/contracts/show.html.erb index 0b71d3b..8f3a82c 100644 --- a/app/views/contracts/show.html.erb +++ b/app/views/contracts/show.html.erb @@ -42,9 +42,12 @@ <%= h deliverable.title %> <%# TODO: Status %> <%= h deliverable.manager.try(:name) %> - <%# TODO: deliverable calculations %> - --- - --- + + <%= format_budget_for_deliverable(deliverable, deliverable.labor_budget_total) %> + + + <%= format_budget_for_deliverable(deliverable, deliverable.overhead_budget_total) %> + --- <%= link_to(l(:button_edit), edit_contract_deliverable_path(@project, resource, deliverable), :class => 'icon icon-edit') %> <%= link_to(l(:button_delete), contract_deliverable_path(@project, resource, deliverable), :method => :delete, :confirm => l(:text_are_you_sure), :class => 'icon icon-del') %> diff --git a/test/integration/contracts_show_test.rb b/test/integration/contracts_show_test.rb index 39c3f91..3a89e43 100644 --- a/test/integration/contracts_show_test.rb +++ b/test/integration/contracts_show_test.rb @@ -56,4 +56,40 @@ class ContractsShowTest < ActionController::IntegrationTest end end + + should "show the total labor budget for a Deliverable" do + @manager = User.generate! + + @deliverable1 = FixedDeliverable.generate!(:contract => @contract, :manager => @manager) + LaborBudget.generate!(:deliverable => @deliverable1, + :hours => 100, + :budget => 4000.5) + LaborBudget.generate!(:deliverable => @deliverable1, + :hours => 100, + :budget => 200.0) + + visit_contract_page(@contract) + assert_select "table#deliverables" do + assert_select "td.labor", :text => /4,200.50/ + end + + end + + should "show the total overhead budget for a Deliverable" do + @manager = User.generate! + + @deliverable1 = FixedDeliverable.generate!(:contract => @contract, :manager => @manager) + OverheadBudget.generate!(:deliverable => @deliverable1, + :hours => 100, + :budget => 4000.5) + OverheadBudget.generate!(:deliverable => @deliverable1, + :hours => 100, + :budget => 200.0) + + visit_contract_page(@contract) + assert_select "table#deliverables" do + assert_select "td.overhead", :text => /4,200.50/ + end + + end end