diff --git a/app/controllers/contracts_controller.rb b/app/controllers/contracts_controller.rb index 4f152d7..4190efc 100644 --- a/app/controllers/contracts_controller.rb +++ b/app/controllers/contracts_controller.rb @@ -7,6 +7,8 @@ class ContractsController < InheritedResources::Base before_filter :authorize before_filter :require_admin, :only => :destroy + helper :contract_formatter + def create create! do |success, failure| success.html { redirect_to contract_url(@project, resource) } diff --git a/app/controllers/deliverables_controller.rb b/app/controllers/deliverables_controller.rb index 70c0180..a013fd1 100644 --- a/app/controllers/deliverables_controller.rb +++ b/app/controllers/deliverables_controller.rb @@ -7,6 +7,7 @@ class DeliverablesController < InheritedResources::Base before_filter :authorize helper :contracts + helper :contract_formatter def index redirect_to contract_url(@project, @contract) diff --git a/app/helpers/contract_formatter_helper.rb b/app/helpers/contract_formatter_helper.rb new file mode 100644 index 0000000..d8998e9 --- /dev/null +++ b/app/helpers/contract_formatter_helper.rb @@ -0,0 +1,54 @@ +# Formatting helpers +module ContractFormatterHelper + def format_as_yes_or_no(value) + if value + l(:general_text_Yes) + else + l(:general_text_No) + end + end + + def format_budget_for_deliverable(deliverable, spent, total, options={}) + extra_css_class = options[:class] || '' + + if total > 0 || spent > 0 + spent_css_classes = 'spent-amount' + spent_css_classes << " #{overage_class(spent, total)}" + spent_css_classes << ' ' << extra_css_class + total_css_classes = 'total-amount white' + total_css_classes << ' ' << extra_css_class + + content_tag(:td, h(format_value_field_for_contracts(spent)), :class => spent_css_classes) + + content_tag(:td, h(format_value_field_for_contracts(total)), :class => total_css_classes) + else + content_tag(:td, '----', :colspan => '2', :class => 'no-value ' + extra_css_class) + end + end + + def format_deliverable_value_fields(value) + number_with_precision(value, :precision => Deliverable::ViewPrecision, :delimiter => '') + end + + def format_deliverable_value_fields_as_dollar_or_percent(value) + if value.to_s.match('%') + h(value) + else # currency or straight amount + number_to_currency(value.to_s.gsub('$',''), :precision => Deliverable::ViewPrecision, :delimiter => '', :unit => '$') + end + end + + def format_hourly_rate(decimal) + number_to_currency(decimal, :precision => 0) + "/hr" if decimal + end + + def format_payment_terms(value) + return '' if value.blank? + return h(value.name) + end + + def format_value_field_for_contracts(value, options={}) + opt = {:unit => '', :precision => Contract::ViewPrecision, :delimiter => ','}.merge(options) + number_to_currency(value, opt) + end + +end diff --git a/app/helpers/contracts_helper.rb b/app/helpers/contracts_helper.rb index f9cde35..24908b6 100644 --- a/app/helpers/contracts_helper.rb +++ b/app/helpers/contracts_helper.rb @@ -7,23 +7,6 @@ module ContractsHelper end end - def format_budget_for_deliverable(deliverable, spent, total, options={}) - extra_css_class = options[:class] || '' - - if total > 0 || spent > 0 - spent_css_classes = 'spent-amount' - spent_css_classes << " #{overage_class(spent, total)}" - spent_css_classes << ' ' << extra_css_class - total_css_classes = 'total-amount white' - total_css_classes << ' ' << extra_css_class - - content_tag(:td, h(format_value_field_for_contracts(spent)), :class => spent_css_classes) + - content_tag(:td, h(format_value_field_for_contracts(total)), :class => total_css_classes) - else - content_tag(:td, '----', :colspan => '2', :class => 'no-value ' + extra_css_class) - end - end - # Simple helper to show the values of a field on an object in a standard format # #
@@ -81,40 +64,6 @@ module ContractsHelper end end - def format_hourly_rate(decimal) - number_to_currency(decimal, :precision => 0) + "/hr" if decimal - end - - def format_payment_terms(value) - return '' if value.blank? - return h(value.name) - end - - def format_deliverable_value_fields(value) - number_with_precision(value, :precision => Deliverable::ViewPrecision, :delimiter => '') - end - - def format_deliverable_value_fields_as_dollar_or_percent(value) - if value.to_s.match('%') - h(value) - else # currency or straight amount - number_to_currency(value.to_s.gsub('$',''), :precision => Deliverable::ViewPrecision, :delimiter => '', :unit => '$') - end - end - - def format_value_field_for_contracts(value, options={}) - opt = {:unit => '', :precision => Contract::ViewPrecision, :delimiter => ','}.merge(options) - number_to_currency(value, opt) - end - - def format_as_yes_or_no(value) - if value - l(:general_text_Yes) - else - l(:general_text_No) - end - end - def retainer_period_options(deliverable, method_options={}) selected = method_options[:selected] if selected && selected.is_a?(Date)