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.
- data/CHANGELOG +6 -1
- data/TODO.txt +60 -38
- data/app/controllers/admin/employees_controller.rb +1 -1
- data/app/controllers/admin/invoices_controller.rb +38 -2
- data/app/controllers/admin/payments_controller.rb +13 -6
- data/app/helpers/admin/activity_tax_field_helper.rb +1 -1
- data/app/helpers/admin/activity_type_field_helper.rb +2 -2
- data/app/helpers/admin/payments_helper.rb +8 -2
- data/app/helpers/application_helper.rb +9 -2
- data/app/model_views/invoices_with_total.rb +5 -0
- data/app/models/activity.rb +7 -3
- data/app/models/activity/labor.rb +1 -1
- data/app/models/activity/labor/slimtimer.rb +2 -0
- data/app/models/client.rb +93 -3
- data/app/models/client_representative.rb +9 -1
- data/app/models/employee.rb +21 -1
- data/app/models/employee/slimtimer.rb +11 -0
- data/app/models/invoice.rb +93 -129
- data/app/models/invoice_payment.rb +54 -0
- data/app/models/payment.rb +25 -48
- data/config/boot.rb +1 -1
- data/db/migrate/029_invoices_with_totals_view_adjustment.rb +29 -0
- data/db/schema.rb +1 -1
- data/lib/brisk-bills.rb +1 -1
- data/lib/tasks/create_last_months_invoices.rake +8 -3
- data/public/javascripts/prototype.js +1573 -1019
- data/public/javascripts/prototype.js-1.6.0.3 +4320 -0
- data/test/test_unit_factory_helper.rb +16 -9
- data/test/unit/client_test.rb +298 -2
- data/test/unit/invoice_payment_test.rb +313 -3
- data/test/unit/invoice_test.rb +49 -36
- data/test/unit/payment_test.rb +35 -31
- data/vendor/plugins/active_scaffold_full_refresh/lib/active_scaffold_full_refresh.rb +4 -2
- metadata +69 -33
data/test/unit/invoice_test.rb
CHANGED
@@ -11,30 +11,29 @@ class InvoiceTest < ActiveSupport::TestCase
|
|
11
11
|
@activity_types = ActivityType.find :all
|
12
12
|
end
|
13
13
|
|
14
|
-
def
|
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)
|
20
|
-
Factory.generate_invoice(200.00, :issued_on => (DateTime.now << 3)
|
21
|
-
Factory.generate_invoice(300.00, :issued_on => (DateTime.now << 2)
|
22
|
-
Factory.generate_invoice(400.00, :issued_on => (DateTime.now << 1)
|
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
|
-
|
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
|
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
|
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 =>
|
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
|
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
|
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 =>
|
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 =>
|
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)
|
data/test/unit/payment_test.rb
CHANGED
@@ -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
|
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
|
-
|
36
|
-
|
37
|
-
payments << Factory.generate_payment(
|
38
|
-
payments << Factory.generate_payment(
|
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
|
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
|
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
|
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
|
-
|
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
|
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
|
-
|
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-
|
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
|
-
|
18
|
-
|
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
|
-
|
32
|
+
type: :runtime
|
33
|
+
version_requirements: *id001
|
25
34
|
- !ruby/object:Gem::Dependency
|
26
35
|
name: extensions
|
27
|
-
|
28
|
-
|
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
|
-
|
46
|
+
type: :runtime
|
47
|
+
version_requirements: *id002
|
35
48
|
- !ruby/object:Gem::Dependency
|
36
49
|
name: pdf-writer
|
37
|
-
|
38
|
-
|
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
|
-
|
60
|
+
type: :runtime
|
61
|
+
version_requirements: *id003
|
45
62
|
- !ruby/object:Gem::Dependency
|
46
63
|
name: slimtimer4r
|
47
|
-
|
48
|
-
|
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
|
-
|
74
|
+
type: :runtime
|
75
|
+
version_requirements: *id004
|
55
76
|
- !ruby/object:Gem::Dependency
|
56
77
|
name: money
|
57
|
-
|
58
|
-
|
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
|
-
|
88
|
+
type: :runtime
|
89
|
+
version_requirements: *id005
|
65
90
|
- !ruby/object:Gem::Dependency
|
66
91
|
name: mysql
|
67
|
-
|
68
|
-
|
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
|
-
|
101
|
+
type: :runtime
|
102
|
+
version_requirements: *id006
|
75
103
|
- !ruby/object:Gem::Dependency
|
76
104
|
name: rails
|
77
|
-
|
78
|
-
|
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
|
-
|
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.
|
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.
|