brisk-bills 0.6.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (34) hide show
  1. data/CHANGELOG +6 -1
  2. data/TODO.txt +60 -38
  3. data/app/controllers/admin/employees_controller.rb +1 -1
  4. data/app/controllers/admin/invoices_controller.rb +38 -2
  5. data/app/controllers/admin/payments_controller.rb +13 -6
  6. data/app/helpers/admin/activity_tax_field_helper.rb +1 -1
  7. data/app/helpers/admin/activity_type_field_helper.rb +2 -2
  8. data/app/helpers/admin/payments_helper.rb +8 -2
  9. data/app/helpers/application_helper.rb +9 -2
  10. data/app/model_views/invoices_with_total.rb +5 -0
  11. data/app/models/activity.rb +7 -3
  12. data/app/models/activity/labor.rb +1 -1
  13. data/app/models/activity/labor/slimtimer.rb +2 -0
  14. data/app/models/client.rb +93 -3
  15. data/app/models/client_representative.rb +9 -1
  16. data/app/models/employee.rb +21 -1
  17. data/app/models/employee/slimtimer.rb +11 -0
  18. data/app/models/invoice.rb +93 -129
  19. data/app/models/invoice_payment.rb +54 -0
  20. data/app/models/payment.rb +25 -48
  21. data/config/boot.rb +1 -1
  22. data/db/migrate/029_invoices_with_totals_view_adjustment.rb +29 -0
  23. data/db/schema.rb +1 -1
  24. data/lib/brisk-bills.rb +1 -1
  25. data/lib/tasks/create_last_months_invoices.rake +8 -3
  26. data/public/javascripts/prototype.js +1573 -1019
  27. data/public/javascripts/prototype.js-1.6.0.3 +4320 -0
  28. data/test/test_unit_factory_helper.rb +16 -9
  29. data/test/unit/client_test.rb +298 -2
  30. data/test/unit/invoice_payment_test.rb +313 -3
  31. data/test/unit/invoice_test.rb +49 -36
  32. data/test/unit/payment_test.rb +35 -31
  33. data/vendor/plugins/active_scaffold_full_refresh/lib/active_scaffold_full_refresh.rb +4 -2
  34. metadata +69 -33
@@ -11,30 +11,29 @@ class InvoiceTest < ActiveSupport::TestCase
11
11
  @activity_types = ActivityType.find :all
12
12
  end
13
13
 
14
- def test_only_newest_invoice_can_be_unpublished
14
+ def ensure_old_invoices_can_be_unpublished
15
15
  client = Factory.create_client
16
16
 
17
17
  # Once they're published they cant be unpublished unless they're the newest invoice...
18
18
  invoices = [
19
- Factory.generate_invoice(100.00, :issued_on => (DateTime.now << 4), :is_published => true ),
20
- Factory.generate_invoice(200.00, :issued_on => (DateTime.now << 3), :is_published => true ),
21
- Factory.generate_invoice(300.00, :issued_on => (DateTime.now << 2), :is_published => true ),
22
- Factory.generate_invoice(400.00, :issued_on => (DateTime.now << 1), :is_published => true )
19
+ Factory.generate_invoice( client, 100.00, :issued_on => (DateTime.now << 4) ),
20
+ Factory.generate_invoice( client, 200.00, :issued_on => (DateTime.now << 3) ),
21
+ Factory.generate_invoice( client, 300.00, :issued_on => (DateTime.now << 2) ),
22
+ Factory.generate_invoice( client, 400.00, :issued_on => (DateTime.now << 1) )
23
23
  ]
24
24
 
25
25
  invoices[0...2].each do |inv|
26
- assert_raise(ActiveRecord::RecordInvalid) {set_published inv, false}
26
+ assert_nothing_raised(ActiveRecord::RecordInvalid) {set_published inv, false}
27
27
  end
28
28
 
29
29
  assert_nothing_raised { set_published invoices[3], false }
30
-
31
30
  end
32
31
 
33
32
  def test_ensure_client_cant_be_changed
34
33
  client = Factory.create_client
35
34
  client2 = Factory.create_client :company_name => 'Client 2, Inc.'
36
35
 
37
- invoice = Factory.generate_invoice 100.00, :client => client
36
+ invoice = Factory.generate_invoice client, 100.00
38
37
 
39
38
  assert_raise(ActiveRecord::RecordInvalid) do
40
39
  invoice.client = client2
@@ -52,7 +51,7 @@ class InvoiceTest < ActiveSupport::TestCase
52
51
  :paid_on => (DateTime.now << 1)
53
52
  )
54
53
 
55
- inv = Factory.generate_invoice 1000.00, :issued_on => (DateTime.now >> 12)
54
+ inv = Factory.generate_invoice client, 1000.00, :issued_on => (DateTime.now >> 12), :is_published => false
56
55
 
57
56
  # Change payment, save:
58
57
  assert_nothing_raised do
@@ -126,8 +125,17 @@ class InvoiceTest < ActiveSupport::TestCase
126
125
  Factory.create_adjustment.activity.id
127
126
  ]
128
127
 
129
- assert_nothing_raised { invoice = Invoice.create! :client => client, :issued_on => (DateTime.now+1), :activity_types => @activity_types }
130
-
128
+ assert_nothing_raised do
129
+ issued_on = (DateTime.now+1)
130
+
131
+ invoice = Invoice.create!(
132
+ :client => client,
133
+ :issued_on => issued_on,
134
+ :activity_types => @activity_types,
135
+ :activities => Invoice.recommended_activities_for(client, issued_on, @activity_types)
136
+ )
137
+ end
138
+
131
139
  # Make sure the right activities were included:
132
140
  assert_equal 4, invoice.activities.length
133
141
  invoice.activities.each { |a| assert_equal true, valid_activities.include?(a.id) }
@@ -155,10 +163,12 @@ class InvoiceTest < ActiveSupport::TestCase
155
163
  invoice = nil
156
164
 
157
165
  assert_nothing_raised do
166
+ issued_on = DateTime.now
158
167
  invoice = Invoice.create!(
159
168
  :client => client,
160
- :issued_on => DateTime.now,
161
- :activity_types => @activity_types
169
+ :issued_on => issued_on,
170
+ :activity_types => @activity_types,
171
+ :activities => Invoice.recommended_activities_for(client, issued_on, @activity_types)
162
172
  )
163
173
 
164
174
  invoice.is_published = true
@@ -167,7 +177,7 @@ class InvoiceTest < ActiveSupport::TestCase
167
177
 
168
178
  # Make sure they can't destroy:
169
179
  assert_equal false, invoice.destroy
170
-
180
+
171
181
  # Make sure they can't update:
172
182
  invoice.comments = "This shouldn't be retained!"
173
183
  assert_raise(ActiveRecord::RecordInvalid) { invoice.save! }
@@ -221,7 +231,14 @@ class InvoiceTest < ActiveSupport::TestCase
221
231
  ]
222
232
 
223
233
  invoice = nil
224
- assert_nothing_raised { invoice = Invoice.create! :client => client, :issued_on => present_date, :activity_types => @activity_types }
234
+ assert_nothing_raised do
235
+ invoice = Invoice.create!(
236
+ :client => client,
237
+ :issued_on => present_date,
238
+ :activity_types => @activity_types,
239
+ :activities => Invoice.recommended_activities_for(client, present_date, @activity_types)
240
+ )
241
+ end
225
242
 
226
243
  # Make sure the right activities were included:
227
244
  assert_equal 4, invoice.activities(true).size
@@ -234,6 +251,7 @@ class InvoiceTest < ActiveSupport::TestCase
234
251
  # Now let's set to the way future:
235
252
  assert_nothing_raised do
236
253
  invoice.issued_on = present_date >> 2
254
+ invoice.activities = invoice.recommended_activities
237
255
  invoice.save!
238
256
  end
239
257
 
@@ -247,6 +265,7 @@ class InvoiceTest < ActiveSupport::TestCase
247
265
  # Now let's set back to present:
248
266
  assert_nothing_raised do
249
267
  invoice.issued_on = present_date
268
+ invoice.activities = invoice.recommended_activities
250
269
  invoice.save!
251
270
  end
252
271
 
@@ -259,22 +278,6 @@ class InvoiceTest < ActiveSupport::TestCase
259
278
  end
260
279
 
261
280
  end
262
-
263
- def test_invoice_deletes_only_if_recent
264
- invoice_time = Time.new
265
-
266
- invoices = [20,40,80,160,320,640,1280].collect do |amt|
267
- invoice_time += 1.weeks
268
- Factory.generate_invoice amt, :issued_on => invoice_time
269
- end
270
-
271
- while invoices.length > 0
272
- 0.upto(invoices.length-2) { |i| assert_equal false, invoices[i].destroy }
273
-
274
- assert_not_equal false, invoices.delete_at(invoices.length-1).destroy
275
- end
276
-
277
- end
278
281
 
279
282
  def test_activity_type_inclusions
280
283
  client = Factory.create_client
@@ -284,7 +287,7 @@ class InvoiceTest < ActiveSupport::TestCase
284
287
  a_type_map = HashWithIndifferentAccess.new
285
288
  @activity_types.each{|at| a_type_map[at.label.downcase] = at }
286
289
 
287
- # First, let's Make sure this includion feature actually works during a create
290
+ # First, let's Make sure this inclusion feature actually works during a create
288
291
  present_date = DateTime.now
289
292
  past_date = (present_date << 1)
290
293
 
@@ -305,7 +308,8 @@ class InvoiceTest < ActiveSupport::TestCase
305
308
  invoice = Invoice.create!(
306
309
  :client => client,
307
310
  :issued_on => present_date,
308
- :activity_types => [ a_type_map[:material], a_type_map[:labor] ]
311
+ :activity_types => [ a_type_map[:material], a_type_map[:labor] ],
312
+ :activities => Invoice.recommended_activities_for(client, present_date, [ a_type_map[:material], a_type_map[:labor] ])
309
313
  )
310
314
  end
311
315
 
@@ -321,6 +325,7 @@ class InvoiceTest < ActiveSupport::TestCase
321
325
  # Let's remove a type and see if this works the way it should:
322
326
  assert_nothing_raised do
323
327
  invoice.activity_types.delete a_type_map[:material]
328
+ invoice.activities = invoice.recommended_activities
324
329
  invoice.save!
325
330
 
326
331
  # We have to expire the cache here....
@@ -339,6 +344,7 @@ class InvoiceTest < ActiveSupport::TestCase
339
344
  # Now let's add the rest of the types, and see if it works the way it should:
340
345
  assert_nothing_raised do
341
346
  invoice.activity_types.push a_type_map[:material], a_type_map[:proposal]
347
+ invoice.activities = invoice.recommended_activities
342
348
  invoice.save!
343
349
 
344
350
  # We have to expire the cache here....
@@ -388,15 +394,18 @@ class InvoiceTest < ActiveSupport::TestCase
388
394
 
389
395
  subactivities = [labor, material, proposal, adjustment]
390
396
 
397
+ present_date = DateTime.now
398
+
391
399
  invoice_src = Invoice.create!(
392
400
  :client => client_src,
393
- :issued_on => DateTime.now,
394
- :activity_types => @activity_types
401
+ :issued_on => present_date,
402
+ :activity_types => @activity_types,
403
+ :activities => Invoice.recommended_activities_for(client_src, present_date, @activity_types)
395
404
  )
396
405
 
397
406
  invoice_dest = Invoice.create!(
398
407
  :client => client_dest,
399
- :issued_on => DateTime.now
408
+ :issued_on => present_date
400
409
  )
401
410
 
402
411
  subactivities.each do |activity_type|
@@ -416,6 +425,8 @@ class InvoiceTest < ActiveSupport::TestCase
416
425
  end
417
426
  end
418
427
 
428
+ invoice_dest.activities(true)
429
+
419
430
  assert_equal 2448.99, invoice_dest.amount
420
431
 
421
432
  assert_equal 2448.99, (invoice_dest.sub_total+invoice_dest.taxes_total)
@@ -432,6 +443,8 @@ class InvoiceTest < ActiveSupport::TestCase
432
443
  assert_equal invoice_src.id, labor.activity.invoice_id
433
444
  assert_equal client_src.id, labor.activity.client_id
434
445
 
446
+ invoice_dest.activities(true)
447
+
435
448
  assert_equal 2447.0, invoice_dest.amount
436
449
 
437
450
  assert_equal 2447.0, (invoice_dest.sub_total+invoice_dest.taxes_total)
@@ -9,9 +9,9 @@ class PaymentTest < ActiveSupport::TestCase
9
9
  client = Factory.create_client
10
10
 
11
11
  invoices = []
12
-
12
+
13
13
  [1200.00, 400, 99.99, 1500.99, 430.01].each do |amt|
14
- inv = Factory.generate_invoice(amt)
14
+ inv = Factory.generate_invoice client, amt
15
15
 
16
16
  assert_equal amt, inv.amount # THis was a weird bug we were having so I put this here...
17
17
 
@@ -23,7 +23,7 @@ class PaymentTest < ActiveSupport::TestCase
23
23
  payments = []
24
24
 
25
25
  [1200.00, 400.00, 99.99, 0.99, 1500, 400.0, 30.01].each do |amt|
26
- payments << Factory.generate_payment(amt)
26
+ payments << Factory.generate_payment( client, amt)
27
27
  end
28
28
 
29
29
  assert_equal 0.to_money, client.balance
@@ -31,23 +31,23 @@ class PaymentTest < ActiveSupport::TestCase
31
31
  payments.delete_at(1).destroy
32
32
 
33
33
  assert_equal 400.00.to_money, client.balance
34
+
35
+ invoices.each_index { |i| assert_equal( ((i == 1) ? false : true), invoices[i].is_paid?(true) ) }
34
36
 
35
- invoices.each_index { |i| assert_equal( ((i == 1) ? false : true), invoices[i].is_paid? ) }
36
-
37
- payments << Factory.generate_payment(174.00)
38
- payments << Factory.generate_payment(15.00)
39
- payments << Factory.generate_payment(10.00)
40
- payments << Factory.generate_payment(201.00)
37
+ payments << Factory.generate_payment( client, 174.00)
38
+ payments << Factory.generate_payment( client, 15.00)
39
+ payments << Factory.generate_payment( client, 10.00)
40
+ payments << Factory.generate_payment( client, 201.00)
41
41
 
42
42
  assert_equal 0.0.to_money, client.balance
43
43
 
44
44
  assert_equal true, invoices[1].is_paid?
45
45
 
46
- payments << Factory.generate_payment(300.20)
46
+ payments << Factory.generate_payment( client, 300.20)
47
47
 
48
48
  assert_equal -300.20.to_money, client.balance
49
49
 
50
- invoices << Factory.generate_invoice(300.20)
50
+ invoices << Factory.generate_invoice( client, 300.20)
51
51
 
52
52
  assert_equal 0.to_money, client.balance
53
53
  end
@@ -55,64 +55,68 @@ class PaymentTest < ActiveSupport::TestCase
55
55
  def test_invoice_allocates_payment_credits
56
56
  client = Factory.create_client
57
57
 
58
- Factory.generate_payment 230.00
59
- Factory.generate_payment 70.00
58
+ Factory.generate_payment client, 230.00
59
+ Factory.generate_payment client, 70.00
60
60
 
61
- invoice_one = Factory.generate_invoice 290.00, :is_published => true
61
+ invoice_one = Factory.generate_invoice client, 290.00
62
62
 
63
63
  assert_equal true, invoice_one.is_paid?
64
64
  assert_equal -10.00, client.balance
65
65
 
66
- Factory.generate_payment 200.00
66
+ Factory.generate_payment client, 200.00
67
67
 
68
- invoice_two = Factory.generate_invoice 220.00, :is_published => true
68
+ invoice_two = Factory.generate_invoice client, 220.00
69
69
 
70
70
  assert_equal false, invoice_two.is_paid?
71
71
  assert_equal 10.00, client.balance
72
72
 
73
- Factory.generate_payment 10.00
73
+ Factory.generate_payment client, 10.00
74
74
 
75
75
  assert_equal true, invoice_two.is_paid?
76
76
  assert_equal 0.00, client.balance
77
77
 
78
- Factory.generate_payment 300.00
78
+ Factory.generate_payment client, 300.00
79
79
 
80
- invoice_three = Factory.generate_invoice 300.00, :is_published => true
80
+ invoice_three = Factory.generate_invoice client, 300.00
81
81
 
82
82
  assert_equal true, invoice_three.is_paid?
83
83
  assert_equal 0.00, client.balance
84
84
  end
85
85
 
86
86
  def test_invoice_paid_on
87
+ client = Factory.create_client
88
+
87
89
  payment_one_on = sanitize_time(Time.now - 3.months)
88
90
  payment_two_on = sanitize_time(Time.now - 2.months)
89
91
  payment_three_on = sanitize_time(Time.now - 2.months)
90
-
91
- Factory.generate_payment 200.00, :paid_on => payment_one_on
92
92
 
93
- invoice = Factory.generate_invoice 600.00, :issued_on => payment_two_on, :is_published => true
93
+ payment_one = Factory.generate_payment client, 201.00, :paid_on => payment_one_on
94
+
95
+ invoice = Factory.generate_invoice client, 601.00, :issued_on => payment_two_on, :is_published => true
94
96
 
95
- payment_two = Factory.generate_payment 200.00, :paid_on => payment_two_on
96
- Factory.generate_payment 200.00, :paid_on => payment_three_on
97
+ payment_two = Factory.generate_payment client, 200.00, :paid_on => payment_two_on
98
+ payment_three = Factory.generate_payment client, 200.00, :paid_on => payment_three_on
97
99
 
98
- assert_equal true, invoice.is_paid?
100
+ assert_equal true, invoice.is_paid?(true)
99
101
  assert_equal payment_two_on, invoice.paid_on
100
102
 
101
103
  payment_two.destroy
102
104
 
103
- assert_equal false, invoice.is_paid?
105
+ assert_equal false, invoice.is_paid?(true)
104
106
  assert_equal nil, invoice.paid_on
105
107
  end
106
108
 
107
109
  def test_whacko_payment_deletes
110
+ client = Factory.create_client
111
+
108
112
  running_time = sanitize_time(Time.now - 1.years)
109
113
 
110
114
  payments = []
111
115
  invoices = []
112
116
 
113
117
  [2,4,8,16,32,64,128,256,512,1024].each do |amt|
114
- invoice = Factory.generate_invoice( amt, :issued_on => (running_time += 2.weeks) )
115
- payments << Factory.generate_payment( amt, :paid_on => (running_time += 2.weeks) )
118
+ invoice = Factory.generate_invoice( client, amt, :issued_on => (running_time += 2.weeks) )
119
+ payments << Factory.generate_payment( client, amt, :paid_on => (running_time += 2.weeks) )
116
120
 
117
121
  assert_equal running_time, invoice.paid_on
118
122
  invoices << invoice
@@ -126,9 +130,9 @@ class PaymentTest < ActiveSupport::TestCase
126
130
 
127
131
  [1,3,5,7,9].each do |i|
128
132
  running_time += 2.weeks
129
- payments << Factory.generate_payment( invoices[i].amount, :paid_on => running_time )
133
+ payments << Factory.generate_payment( client, invoices[i].amount, :paid_on => running_time )
130
134
 
131
- assert_equal true, invoices[i].is_paid?
135
+ assert_equal true, invoices[i].is_paid?(true)
132
136
  assert_equal running_time, invoices[i].paid_on
133
137
  end
134
138
 
@@ -138,7 +142,7 @@ class PaymentTest < ActiveSupport::TestCase
138
142
 
139
143
  assert_equal 682.to_money, Factory.create_client.balance
140
144
 
141
- Factory.generate_payment 682, :paid_on => (running_time += 2.weeks)
145
+ Factory.generate_payment client, 682, :paid_on => (running_time += 2.weeks)
142
146
 
143
147
  [0,2,4,6,8].each { |i| assert_equal running_time, invoices[i].paid_on }
144
148
 
@@ -9,7 +9,7 @@ module ActiveScaffoldFullRefresh
9
9
  if successful?
10
10
  do_list unless @records
11
11
 
12
- render(:update) do |page|
12
+ render(:update) do |page|
13
13
  page.replace_html active_scaffold_content_id, :partial => 'list', :layout => false
14
14
 
15
15
  if on_action == :create
@@ -21,7 +21,9 @@ module ActiveScaffoldFullRefresh
21
21
  end
22
22
  end
23
23
  else
24
- render :action => "#{on_action}.html.erb", :layout => false
24
+ render(:update) do |page|
25
+ page.replace_html element_form_id(:action => :update), :partial => 'update_form', :layout => false
26
+ end
25
27
  end
26
28
 
27
29
  else
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: brisk-bills
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 7
8
+ - 0
9
+ version: 0.7.0
5
10
  platform: ruby
6
11
  authors:
7
12
  - Chris DeRose, DeRose Technologies, Inc.
@@ -9,79 +14,106 @@ autorequire:
9
14
  bindir: bin
10
15
  cert_chain: []
11
16
 
12
- date: 2010-05-03 00:00:00 -04:00
17
+ date: 2010-10-06 00:00:00 -04:00
13
18
  default_executable:
14
19
  dependencies:
15
20
  - !ruby/object:Gem::Dependency
16
21
  name: rake
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
20
24
  requirements:
21
25
  - - ">="
22
26
  - !ruby/object:Gem::Version
27
+ segments:
28
+ - 0
29
+ - 8
30
+ - 3
23
31
  version: 0.8.3
24
- version:
32
+ type: :runtime
33
+ version_requirements: *id001
25
34
  - !ruby/object:Gem::Dependency
26
35
  name: extensions
27
- type: :runtime
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
30
38
  requirements:
31
39
  - - ">="
32
40
  - !ruby/object:Gem::Version
41
+ segments:
42
+ - 0
43
+ - 6
44
+ - 0
33
45
  version: 0.6.0
34
- version:
46
+ type: :runtime
47
+ version_requirements: *id002
35
48
  - !ruby/object:Gem::Dependency
36
49
  name: pdf-writer
37
- type: :runtime
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
50
+ prerelease: false
51
+ requirement: &id003 !ruby/object:Gem::Requirement
40
52
  requirements:
41
53
  - - ">="
42
54
  - !ruby/object:Gem::Version
55
+ segments:
56
+ - 1
57
+ - 1
58
+ - 8
43
59
  version: 1.1.8
44
- version:
60
+ type: :runtime
61
+ version_requirements: *id003
45
62
  - !ruby/object:Gem::Dependency
46
63
  name: slimtimer4r
47
- type: :runtime
48
- version_requirement:
49
- version_requirements: !ruby/object:Gem::Requirement
64
+ prerelease: false
65
+ requirement: &id004 !ruby/object:Gem::Requirement
50
66
  requirements:
51
67
  - - ">="
52
68
  - !ruby/object:Gem::Version
69
+ segments:
70
+ - 0
71
+ - 2
72
+ - 4
53
73
  version: 0.2.4
54
- version:
74
+ type: :runtime
75
+ version_requirements: *id004
55
76
  - !ruby/object:Gem::Dependency
56
77
  name: money
57
- type: :runtime
58
- version_requirement:
59
- version_requirements: !ruby/object:Gem::Requirement
78
+ prerelease: false
79
+ requirement: &id005 !ruby/object:Gem::Requirement
60
80
  requirements:
61
81
  - - ">="
62
82
  - !ruby/object:Gem::Version
83
+ segments:
84
+ - 2
85
+ - 2
86
+ - 0
63
87
  version: 2.2.0
64
- version:
88
+ type: :runtime
89
+ version_requirements: *id005
65
90
  - !ruby/object:Gem::Dependency
66
91
  name: mysql
67
- type: :runtime
68
- version_requirement:
69
- version_requirements: !ruby/object:Gem::Requirement
92
+ prerelease: false
93
+ requirement: &id006 !ruby/object:Gem::Requirement
70
94
  requirements:
71
95
  - - ">="
72
96
  - !ruby/object:Gem::Version
97
+ segments:
98
+ - 2
99
+ - 7
73
100
  version: "2.7"
74
- version:
101
+ type: :runtime
102
+ version_requirements: *id006
75
103
  - !ruby/object:Gem::Dependency
76
104
  name: rails
77
- type: :runtime
78
- version_requirement:
79
- version_requirements: !ruby/object:Gem::Requirement
105
+ prerelease: false
106
+ requirement: &id007 !ruby/object:Gem::Requirement
80
107
  requirements:
81
108
  - - ">="
82
109
  - !ruby/object:Gem::Version
110
+ segments:
111
+ - 2
112
+ - 3
113
+ - 2
83
114
  version: 2.3.2
84
- version:
115
+ type: :runtime
116
+ version_requirements: *id007
85
117
  description: A full-featured, rails-based system for basic accounting, with a particular focus on invoicing and automatic bill generation.
86
118
  email: cderose@derosetechnologies.com
87
119
  executables:
@@ -246,6 +278,7 @@ files:
246
278
  - db/migrate/026_create_st_settings.rb
247
279
  - db/migrate/027_create_sessions.rb
248
280
  - db/migrate/028_money_to_cents.rb
281
+ - db/migrate/029_invoices_with_totals_view_adjustment.rb
249
282
  - db/schema.rb
250
283
  - INSTALL
251
284
  - lib/brisk-bills/initializer.rb
@@ -309,6 +342,7 @@ files:
309
342
  - public/javascripts/effects.js
310
343
  - public/javascripts/modalbox.js
311
344
  - public/javascripts/prototype.js
345
+ - public/javascripts/prototype.js-1.6.0.3
312
346
  - public/javascripts/scriptaculous.js
313
347
  - public/javascripts/shadedborder.js
314
348
  - public/javascripts/slider.js
@@ -638,18 +672,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
638
672
  requirements:
639
673
  - - ">="
640
674
  - !ruby/object:Gem::Version
675
+ segments:
676
+ - 0
641
677
  version: "0"
642
- version:
643
678
  required_rubygems_version: !ruby/object:Gem::Requirement
644
679
  requirements:
645
680
  - - ">="
646
681
  - !ruby/object:Gem::Version
682
+ segments:
683
+ - 0
647
684
  version: "0"
648
- version:
649
685
  requirements: []
650
686
 
651
687
  rubyforge_project: brisk-bills
652
- rubygems_version: 1.3.5
688
+ rubygems_version: 1.3.6
653
689
  signing_key:
654
690
  specification_version: 3
655
691
  summary: A full-featured, rails-based system for basic accounting, with a particular focus on invoicing and automatic bill generation.