From c13f31b1b5888a43a3bcba45861f07f58de01d7e Mon Sep 17 00:00:00 2001 From: Eric Davis Date: Mon, 30 Aug 2010 10:30:59 -0700 Subject: [PATCH] [#4420] Added a Deliverable finance form for each Retainer month. --- app/models/retainer_deliverable.rb | 10 +++++++++- app/views/deliverables/_finance_form.html.erb | 6 +++--- app/views/deliverables/_form.html.erb | 8 +++++++- config/locales/en.yml | 1 + test/integration/deliverables_edit_test.rb | 17 +++++++++++++++++ 5 files changed, 37 insertions(+), 5 deletions(-) diff --git a/app/models/retainer_deliverable.rb b/app/models/retainer_deliverable.rb index 31569a5..16cbdbd 100644 --- a/app/models/retainer_deliverable.rb +++ b/app/models/retainer_deliverable.rb @@ -44,7 +44,15 @@ class RetainerDeliverable < HourlyDeliverable month_acc end - + + def labor_budgets_for_date(date) + labor_budgets.all(:conditions => {:year => date.year, :month => date.month}) + end + + def overhead_budgets_for_date(date) + overhead_budgets.all(:conditions => {:year => date.year, :month => date.month}) + end + def create_budgets_for_periods # For each month in the time span months.each do |month| diff --git a/app/views/deliverables/_finance_form.html.erb b/app/views/deliverables/_finance_form.html.erb index a672579..a3e7dfc 100644 --- a/app/views/deliverables/_finance_form.html.erb +++ b/app/views/deliverables/_finance_form.html.erb @@ -1,10 +1,10 @@ -<% form.inputs :name => l(:text_deliverable_finances), :id => 'deliverable-finances' do %> +<% form.inputs :name => label, :class => 'deliverable-finances' do %>
  • <%= content_tag(:label, l(:field_labor)) %> - <% form.fields_for :labor_budgets do |labor_budget| %> + <% form.fields_for :labor_budgets, labor_budgets do |labor_budget| %> <%# TODO: Select field for the Time Entry Activity in a td %>
    @@ -31,7 +31,7 @@ <%= content_tag(:label, l(:field_overhead)) %> - <% form.fields_for :overhead_budgets do |overhead_budget| %> + <% form.fields_for :overhead_budgets, overhead_budgets do |overhead_budget| %> <%# TODO: Select field for the Time Entry Activity in a td %>
    diff --git a/app/views/deliverables/_form.html.erb b/app/views/deliverables/_form.html.erb index 46ed70c..6f75c71 100644 --- a/app/views/deliverables/_form.html.erb +++ b/app/views/deliverables/_form.html.erb @@ -28,7 +28,13 @@ <% end %> <% end %> -<%= render :partial => 'finance_form', :locals => {:form => form, :resource => resource} %> +<% if resource.retainer? %> +<% resource.months.each do |month| %> +<%= render :partial => 'finance_form', :locals => {:form => form, :labor_budgets => resource.labor_budgets_for_date(month), :overhead_budgets => resource.overhead_budgets_for_date(month), :label => l(:text_deliverable_finances_date, :date => month.strftime("%B, %Y")) } %> +<% end %> +<% else %> +<%= render :partial => 'finance_form', :locals => {:form => form, :labor_budgets => resource.labor_budgets, :overhead_budgets => resource.overhead_budgets, :label => l(:text_deliverable_finances) } %> +<% end %> diff --git a/config/locales/en.yml b/config/locales/en.yml index 9b700f5..3adbf14 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -28,6 +28,7 @@ en: field_feature_sign_off: Feature Sign Off field_warranty_sign_off: Warranty Sign Off text_deliverable_finances: Deliverable Finances + text_deliverable_finances_date: "Deliverable Finances - {{date}}" text_short_hours: hrs text_dollar_sign: '$' field_client_point_of_contact: "Point of Contact" diff --git a/test/integration/deliverables_edit_test.rb b/test/integration/deliverables_edit_test.rb index c00dfc3..cbbf27b 100644 --- a/test/integration/deliverables_edit_test.rb +++ b/test/integration/deliverables_edit_test.rb @@ -90,4 +90,21 @@ class DeliverablesEditTest < ActionController::IntegrationTest assert_equal 10, @overhead_budget.hours assert_equal 1000.0, @overhead_budget.budget end + + should "show a Deliverable Finances section for each Retainer period" do + @retainer_deliverable = RetainerDeliverable.spawn(:contract => @contract, :manager => @manager, :title => "Retainer") + @retainer_deliverable.labor_budgets << @labor_budget = LaborBudget.spawn(:deliverable => @retainer_deliverable, :budget => 1000, :hours => 10) + @retainer_deliverable.overhead_budgets << @overhead_budget = OverheadBudget.spawn(:deliverable => @retainer_deliverable, :budget => 1000, :hours => 10) + @retainer_deliverable.start_date = '2010-01-01' + @retainer_deliverable.end_date = '2010-12-31' + @retainer_deliverable.save! + assert_equal 12, @retainer_deliverable.months.length + + visit_contract_page(@contract) + click_link_within "#deliverable_details_#{@retainer_deliverable.id}", 'Edit' + assert_response :success + assert_template 'deliverables/edit' + + assert_select 'fieldset.deliverable-finances', :count => 12 + end end