[#4181] Add a total field to deliverables.

This commit is contained in:
Eric Davis
2010-07-01 15:22:12 -07:00
parent 7efaf8dbe2
commit ae8c75a051
6 changed files with 47 additions and 1 deletions

View File

@@ -16,6 +16,14 @@ class Deliverable < ActiveRecord::Base
''
end
def total=(v)
if v.is_a? String
write_attribute(:total, v.gsub(/[$ ,]/, ''))
else
write_attribute(:total, v)
end
end
if Rails.env.test?
generator_for :title, :method => :next_title

View File

@@ -5,6 +5,8 @@
<%= form.input :start_date, :as => :string, :input_html => {:size => 10}, :hint => calendar_for('deliverable_start_date') %>
<%= form.input :end_date, :as => :string, :input_html => {:size => 10}, :hint => calendar_for('deliverable_end_date') %>
<%= form.input :notes, :input_html => {:class => 'wiki-edit', :rows => '5'} %>
<%= form.input :total, :input_html => {:size => 10} %>
<% end %>
<% form.buttons do %>
<%= form.commit_button :label => l(:button_save) %>

View File

@@ -26,4 +26,4 @@ en:
field_labor: Labor
field_overhead: Overhead
field_fixed: Fixed
field_total: Total

View File

@@ -0,0 +1,11 @@
class AddTotalToDeliverables < ActiveRecord::Migration
def self.up
add_column :deliverables, :total, :decimal, :precision => 15, :scale => 2
add_index :deliverables, :total
end
def self.down
remove_column :deliverables, :total
end
end

View File

@@ -56,6 +56,7 @@ class DeliverablesNewTest < ActionController::IntegrationTest
fill_in "Start", :with => '2010-01-01'
fill_in "End Date", :with => '2010-12-31'
fill_in "Notes", :with => 'Some notes on the deliverable'
fill_in "Total", :with => '1,000.00'
click_button "Save"
@@ -69,5 +70,6 @@ class DeliverablesNewTest < ActionController::IntegrationTest
assert_equal '2010-01-01', @deliverable.start_date.to_s
assert_equal '2010-12-31', @deliverable.end_date.to_s
assert_equal @manager, @deliverable.manager
assert_equal 1000.0, @deliverable.total.to_f
end
end

View File

@@ -7,4 +7,27 @@ class DeliverableTest < ActiveSupport::TestCase
should_validate_presence_of :title
should_validate_presence_of :type
should_validate_presence_of :manager
context "#total=" do
should "strip dollar signs when writing" do
d = Deliverable.new
d.total = '$100.00'
assert_equal 100.00, d.total.to_f
end
should "strip commas when writing" do
d = Deliverable.new
d.total = '20,100.00'
assert_equal 20100.00, d.total.to_f
end
should "strip spaces when writing" do
d = Deliverable.new
d.total = '20 100.00'
assert_equal 20100.00, d.total.to_f
end
end
end