plutus 0.10.1 → 0.15

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. checksums.yaml +5 -5
  2. data/README.markdown +172 -99
  3. data/app/assets/javascripts/plutus/application.js +5 -4
  4. data/app/assets/javascripts/plutus/reports.js +5 -0
  5. data/app/assets/stylesheets/bootstrap-theme.min.css +5 -0
  6. data/app/assets/stylesheets/bootstrap.min.css +5 -0
  7. data/app/assets/stylesheets/plutus/application.css +11 -5
  8. data/app/controllers/plutus/accounts_controller.rb +1 -16
  9. data/app/controllers/plutus/application_controller.rb +4 -0
  10. data/app/controllers/plutus/entries_controller.rb +7 -17
  11. data/app/controllers/plutus/reports_controller.rb +40 -0
  12. data/app/models/plutus/account.rb +92 -7
  13. data/app/models/plutus/amount.rb +11 -1
  14. data/app/models/plutus/amounts_extension.rb +31 -6
  15. data/app/models/plutus/asset.rb +21 -18
  16. data/app/models/plutus/entry.rb +28 -26
  17. data/app/models/plutus/equity.rb +22 -19
  18. data/app/models/plutus/expense.rb +21 -18
  19. data/app/models/plutus/liability.rb +27 -19
  20. data/app/models/plutus/revenue.rb +22 -19
  21. data/app/models/plutus/tenancy.rb +5 -1
  22. data/app/views/layouts/plutus/_messages.html.erb +9 -0
  23. data/app/views/layouts/plutus/_navigation.html.erb +19 -0
  24. data/app/views/layouts/plutus/_navigation_links.html.erb +5 -0
  25. data/app/views/layouts/plutus/application.html.erb +19 -0
  26. data/app/views/plutus/accounts/index.html.erb +9 -12
  27. data/app/views/plutus/entries/index.html.erb +22 -11
  28. data/app/views/plutus/reports/_account.html.erb +28 -0
  29. data/app/views/plutus/reports/balance_sheet.html.erb +21 -0
  30. data/app/views/plutus/reports/income_statement.html.erb +24 -0
  31. data/config/routes.rb +6 -3
  32. data/{lib/generators/plutus/templates/migration.rb → db/migrate/20160422010135_create_plutus_tables.rb} +6 -10
  33. data/lib/generators/plutus/add_date_upgrade_generator.rb +11 -0
  34. data/lib/generators/plutus/base_generator.rb +19 -0
  35. data/lib/generators/plutus/plutus_generator.rb +8 -22
  36. data/lib/generators/plutus/templates/add_date_migration.rb +12 -0
  37. data/lib/generators/plutus/templates/tenant_migration.rb +1 -1
  38. data/lib/generators/plutus/templates/update_migration.rb +2 -2
  39. data/lib/generators/plutus/tenancy_generator.rb +2 -17
  40. data/lib/generators/plutus/upgrade_plutus_generator.rb +6 -22
  41. data/lib/plutus.rb +2 -5
  42. data/lib/plutus/engine.rb +5 -0
  43. data/lib/plutus/version.rb +1 -1
  44. data/spec/controllers/accounts_controller_spec.rb +11 -20
  45. data/spec/controllers/entries_controller_spec.rb +11 -20
  46. data/spec/controllers/reports_controller_spec.rb +24 -0
  47. data/spec/factories/tenant_factory.rb +12 -0
  48. data/spec/models/account_spec.rb +79 -16
  49. data/spec/models/amount_spec.rb +6 -1
  50. data/spec/models/debit_amount_spec.rb +1 -1
  51. data/spec/models/entry_spec.rb +108 -29
  52. data/spec/models/tenancy_spec.rb +26 -8
  53. data/spec/routing/accounts_routing_spec.rb +6 -25
  54. data/spec/routing/entries_routing_spec.rb +6 -25
  55. data/spec/spec_helper.rb +5 -0
  56. data/spec/support/account_shared_examples.rb +14 -10
  57. data/spec/support/amount_shared_examples.rb +7 -7
  58. data/spec/support/shoulda_matchers.rb +8 -0
  59. metadata +100 -27
  60. data/app/views/plutus/accounts/show.html.erb +0 -59
  61. data/app/views/plutus/entries/show.html.erb +0 -46
  62. data/spec/schema.rb +0 -31
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 9fcc5366c07c941520dd02ae4766c2f3a66bc86b
4
- data.tar.gz: e65271810a8320451378f8ab75d4ac03ed14d4ba
2
+ SHA256:
3
+ metadata.gz: f8065148547846775eb69a045ab294f98229eba48276fdeff5db760534264d6b
4
+ data.tar.gz: a1ccfe5713169766bc4ff1582489b91113e404b47ee345f7cb809dfa155718c9
5
5
  SHA512:
6
- metadata.gz: bd9b9c732a986b477cd82777bfbf571303b41274f1a49f35fd9f0205c942ed037d330ebdab6cd764e1c2f32848cbd511e3322db99432bb2641edc41a16fec7ac
7
- data.tar.gz: 6913884a7ca65b31f98abe1c978a585f3e8c212d0074a2dce4e7755b09163560e93c296b457659c3ca4c422832f845a148efd8ac78a03c7e625540bc211107e2
6
+ metadata.gz: abd85e610d29aa6ec688a89b6cc739aa6c3a8aae484908fa5fc85c65b1e162e1d2342316c2c282cfe4b773299251fcc0187776f9c14a04d9b07cd54546970490
7
+ data.tar.gz: 6df2d57b5a8972f40e2b065b94cb6b7cacd1edfba519d07105917c52dadf20a7b57f03a50d9060e5a37409c5e87e67d409ae7e111916739cfa2900af5c258fbb
@@ -1,14 +1,14 @@
1
1
  Plutus
2
2
  =================
3
- [![Build Status](https://secure.travis-ci.org/mbulat/plutus.png?branch=master)](http://travis-ci.org/mbulat/plutus)
3
+ [![Build Status](https://travis-ci.org/mbulat/plutus.svg?branch=master)](https://travis-ci.org/mbulat/plutus) [![Coverage Status](https://coveralls.io/repos/github/mbulat/plutus/badge.svg?branch=master)](https://coveralls.io/github/mbulat/plutus?branch=master)
4
4
 
5
5
  The Plutus plugin is a Ruby on Rails Engine which provides a double entry accounting system for your application.
6
6
 
7
7
  Compatibility
8
8
  =============
9
9
 
10
- * Ruby versions: MRI 1.9.3, MRI 2.0, MRI 2.1, Rubinius 2.2, JRuby 1.7+
11
- * Rails versions: ~> 4.0
10
+ * Ruby versions: MRI 2.2.2+ (should work with earlier versions if using Rails 4)
11
+ * Rails versions: ~> 5.0, ~> 4.0
12
12
 
13
13
  For earlier versions, and upgrading, please see the section titled [Previous Versions](https://github.com/mbulat/plutus#previous-versions)
14
14
 
@@ -16,9 +16,7 @@ Installation
16
16
  ============
17
17
 
18
18
  - Add the gem to your Gemfile `gem "plutus"`
19
-
20
- - generate migration files `rails g plutus`
21
-
19
+ - generate migration files `rake plutus:install:migrations`
22
20
  - run migrations `rake db:migrate`
23
21
 
24
22
  Overview
@@ -45,18 +43,21 @@ The Account class represents accounts in the system. The Account table uses sing
45
43
 
46
44
  Your Book of Accounts needs to be created prior to recording any entries. The simplest method is to have a number of `create` methods in your db/seeds.rb file like so:
47
45
 
48
- Plutus::Asset.create(:name => "Accounts Receivable")
49
- Plutus::Asset.create(:name => "Cash")
50
- Plutus::Revenue.create(:name => "Sales Revenue")
51
- Plutus::Liability.create(:name => "Unearned Revenue")
52
- Plutus::Liability.create(:name => "Sales Tax Payable")
53
- etc...
46
+ ```ruby
47
+ Plutus::Asset.create(:name => "Accounts Receivable")
48
+ Plutus::Asset.create(:name => "Cash")
49
+ Plutus::Revenue.create(:name => "Sales Revenue")
50
+ Plutus::Liability.create(:name => "Unearned Revenue")
51
+ Plutus::Liability.create(:name => "Sales Tax Payable")
52
+ ```
54
53
 
55
54
  Then simply run `rake db:seed`
56
55
 
57
56
  Each account can also be marked as a "Contra Account". A contra account will have its normal balance swapped. For example, to remove equity, a "Drawing" account may be created as a contra equity account as follows:
58
57
 
59
- Plutus::Equity.create(:name => "Drawing", :contra => true)
58
+ ```ruby
59
+ Plutus::Equity.create(:name => "Drawing", :contra => true)
60
+ ```
60
61
 
61
62
  At all times the balance of all accounts should conform to the [Accounting
62
63
  Equation](http://en.wikipedia.org/wiki/Accounting_equation)
@@ -75,45 +76,56 @@ Recording an Entry
75
76
 
76
77
  Let's assume we're accounting on an [Accrual basis](http://en.wikipedia.org/wiki/Accounting_methods#Accrual_basis). We've just taken a customer's order for some widgets, which we've also billed him for. At this point we've actually added a liability to the company until we deliver the goods. To record this entry we'd need two accounts:
77
78
 
78
- >> Plutus::Asset.create(:name => "Cash")
79
- >> Plutus::Liability.create(:name => "Unearned Revenue")
79
+ ```ruby
80
+ >> Plutus::Asset.create(:name => "Cash")
81
+ >> Plutus::Liability.create(:name => "Unearned Revenue")
82
+ ```
80
83
 
81
- Next we'll build the entry we want to record. Plutus provides a simple interface to build the entry.
84
+ Next we'll build the entry we want to record. Plutus uses ActiveRecord conventions to build the transaction and its associated amounts.
82
85
 
83
- entry = Plutus::Entry.build(
84
- :description => "Order placed for widgets",
85
- :debits => [
86
- {:account => "Cash", :amount => 100.00}],
87
- :credits => [
88
- {:account => "Unearned Revenue", :amount => 100.00}])
86
+ ```ruby
87
+ entry = Plutus::Entry.new(
88
+ :description => "Order placed for widgets",
89
+ :date => Date.yesterday,
90
+ :debits => [
91
+ {:account_name => "Cash", :amount => 100.00}],
92
+ :credits => [
93
+ {:account_name => "Unearned Revenue", :amount => 100.00}])
94
+ ```
89
95
 
90
- The build method takes a hash consisting of a description, and an array of debits and credits. Each debit and credit item is a hash that specifies the amount, and the account to be debited or credited. Simply pass in the string name you used when you created the account.
96
+ Entries must specify a description, as well as at least one credit and debit amount. Specifying the date is optional; by default, the current date will be assigned to the entry before the record is saved. `debits` and `credits` must specify an array of hashes, with an amount value as well as an account, either by providing a `Plutus::Account` to `account` or by passing in an `account_name` string.
91
97
 
92
98
  Finally, save the entry.
93
99
 
94
- >> entry.save
100
+ ```ruby
101
+ >> entry.save
102
+ ```
95
103
 
96
- If there are any issues with your credit and debit amounts, the save will fail and return false. You can inspect the errors via `entry.errors`. Because we are doing double-entry accounting, your credit and debit amounts must always cancel out to keep the accounts in balance.
104
+ If there are any issues with your credit and debit amounts, the save will fail and return false. You can inspect the errors via `entry.errors`. Because we are doing double-entry accounting, the sum total of your credit and debit amounts must always cancel out to keep the accounts in balance.
97
105
 
98
106
  Recording an Entry with multiple accounts
99
107
  -----------------------------------------
100
108
 
101
109
  Often times a single entry requires more than one type of account. A classic example would be a entry in which a tax is charged. We'll assume that we have not yet received payment for the order, so we'll need an "Accounts Receivable" Asset:
102
110
 
103
- >> Plutus::Asset.create(:name => "Accounts Receivable")
104
- >> Plutus::Revenue.create(:name => "Sales Revenue")
105
- >> Plutus::Liability.create(:name => "Sales Tax Payable")
111
+ ```ruby
112
+ >> Plutus::Asset.create(:name => "Accounts Receivable")
113
+ >> Plutus::Revenue.create(:name => "Sales Revenue")
114
+ >> Plutus::Liability.create(:name => "Sales Tax Payable")
115
+ ```
106
116
 
107
117
  And here's the entry:
108
118
 
109
- entry = Plutus::Entry.build(
110
- :description => "Sold some widgets",
111
- :debits => [
112
- {:account => "Accounts Receivable", :amount => 50}],
113
- :credits => [
114
- {:account => "Sales Revenue", :amount => 45},
115
- {:account => "Sales Tax Payable", :amount => 5}])
116
- entry.save
119
+ ```ruby
120
+ entry = Plutus::Entry.build(
121
+ :description => "Sold some widgets",
122
+ :debits => [
123
+ {:account_name => "Accounts Receivable", :amount => 50}],
124
+ :credits => [
125
+ {:account_name => "Sales Revenue", :amount => 45},
126
+ {:account_name => "Sales Tax Payable", :amount => 5}])
127
+ entry.save
128
+ ```
117
129
 
118
130
  Associating Documents
119
131
  ---------------------
@@ -122,19 +134,23 @@ Although Plutus does not provide a mechanism for generating invoices or orders,
122
134
 
123
135
  Suppose we pull up our latest invoice in order to generate a entry for plutus (we'll assume you already have an Invoice model):
124
136
 
125
- >> invoice = Invoice.last
137
+ ```ruby
138
+ >> invoice = Invoice.last
139
+ ```
126
140
 
127
141
  Let's assume we're using the same entry from the last example
128
142
 
129
- entry = Plutus::Entry.build(
130
- :description => "Sold some widgets",
131
- :commercial_document => invoice,
132
- :debits => [
133
- {:account => "Accounts Receivable", :amount => invoice.total_amount}],
134
- :credits => [
135
- {:account => "Sales Revenue", :amount => invoice.sales_amount},
136
- {:account => "Sales Tax Payable", :amount => invoice.tax_amount}])
137
- entry.save
143
+ ```ruby
144
+ entry = Plutus::Entry.new(
145
+ :description => "Sold some widgets",
146
+ :commercial_document => invoice,
147
+ :debits => [
148
+ {:account_name => "Accounts Receivable", :amount => invoice.total_amount}],
149
+ :credits => [
150
+ {:account_name => "Sales Revenue", :amount => invoice.sales_amount},
151
+ {:account_name => "Sales Tax Payable", :amount => invoice.tax_amount}])
152
+ entry.save
153
+ ```
138
154
 
139
155
  The commercial document attribute on the entry is a polymorphic association allowing you to associate any record from your models with a entry (i.e. Bills, Invoices, Receipts, Returns, etc.)
140
156
 
@@ -143,26 +159,46 @@ Checking the Balance of an Individual Account
143
159
 
144
160
  Each account can report on its own balance. This number should normally be positive. If the number is negative, you may have a problem.
145
161
 
146
- >> cash = Plutus::Asset.find_by_name("Cash")
147
- >> cash.balance
148
- => #<BigDecimal:103259bb8,'0.2E4',4(12)>
162
+ ```ruby
163
+ >> cash = Plutus::Asset.find_by_name("Cash")
164
+ >> cash.balance
165
+ => #<BigDecimal:103259bb8,'0.2E4',4(12)>
166
+ ```
167
+
168
+ The balance can also be calculated within a specified date range. Dates can be strings in the format of "yyyy-mm-dd" or Ruby Date objects.
149
169
 
170
+ ```ruby
171
+ >> cash = Plutus::Asset.find_by_name("Cash")
172
+ >> cash.balance(:from_date => "2014-01-01", :to_date => Date.today)
173
+ => #<BigDecimal:103259bb8,'0.2E4',4(12)>
174
+ ```
150
175
 
151
176
  Checking the Balance of an Account Type
152
177
  ---------------------------------------
153
178
 
154
179
  Each subclass of accounts can report on the total balance of all the accounts of that type. This number should normally be positive. If the number is negative, you may have a problem.
155
180
 
156
- >> Plutus::Asset.balance
157
- => #<BigDecimal:103259bb8,'0.2E4',4(12)>
181
+ ```ruby
182
+ >> Plutus::Asset.balance
183
+ => #<BigDecimal:103259bb8,'0.2E4',4(12)>
184
+ ```
185
+
186
+ Again, a date range can be given
187
+
188
+ ```ruby
189
+ >> Plutus::Asset.balance(:from_date => "2014-01-01", :to_date => Date.today)
190
+ => #<BigDecimal:103259bb8,'0.2E4',4(12)>
191
+ ```
158
192
 
159
193
  Calculating the Trial Balance
160
194
  -----------------------------
161
195
 
162
196
  The [Trial Balance](http://en.wikipedia.org/wiki/Trial_balance) for all accounts on the system can be found through the abstract Account class. This value should be 0 unless there is an error in the system.
163
197
 
164
- >> Plutus::Account.trial_balance
165
- => #<BigDecimal:1031c0d28,'0.0',4(12)>
198
+ ```ruby
199
+ >> Plutus::Account.trial_balance
200
+ => #<BigDecimal:1031c0d28,'0.0',4(12)>
201
+ ```
166
202
 
167
203
  Contra Accounts and Complex Entries
168
204
  -----------------------------------
@@ -173,37 +209,61 @@ For complex entries, you should always ensure that you are balancing your accoun
173
209
 
174
210
  For example, let's assume the owner of a business wants to withdraw cash. First we'll assume that we have an asset account for "Cash" which the funds will be drawn from. We'll then need an Equity account to record where the funds are going, however, in this case, we can't simply create a regular Equity account. The "Cash" account must be credited for the decrease in its balance since it's an Asset. Likewise, Equity accounts are typically credited when there is an increase in their balance. Equity is considered an owner's rights to Assets in the business. In this case however, we are not simply increasing the owner's rights to assets within the business; we are actually removing capital from the business altogether. Hence both sides of our accounting equation will see a decrease. In order to accomplish this, we need to create a Contra-Equity account we'll call "Drawings". Since Equity accounts normally have credit balances, a Contra-Equity account will have a debit balance, which is what we need for our entry.
175
211
 
176
- >> Plutus::Equity.create(:name => "Drawing", :contra => true)
177
- >> Plutus::Asset.create(:name => "Cash")
212
+ ```ruby
213
+ >> Plutus::Equity.create(:name => "Drawing", :contra => true)
214
+ >> Plutus::Asset.create(:name => "Cash")
215
+ ```
178
216
 
179
217
  We would then create the following entry:
180
218
 
181
- entry = Plutus::Entry.build(
182
- :description => "Owner withdrawing cash",
183
- :debits => [
184
- {:account => "Drawing", :amount => 1000}],
185
- :credits => [
186
- {:account => "Cash", :amount => 1000}])
187
- entry.save
219
+ ```ruby
220
+ entry = Plutus::Entry.new(
221
+ :description => "Owner withdrawing cash",
222
+ :debits => [
223
+ {:account_name => "Drawing", :amount => 1000}],
224
+ :credits => [
225
+ {:account_name => "Cash", :amount => 1000}])
226
+ entry.save
227
+ ```
188
228
 
189
229
  To make the example clearer, imagine instead that the owner decides to invest his money into the business in exchange for some type of equity security. In this case we might have the following accounts:
190
230
 
191
- >> Plutus::Equity.create(:name => "Common Stock")
192
- >> Plutus::Asset.create(:name => "Cash")
231
+ ```ruby
232
+ >> Plutus::Equity.create(:name => "Common Stock")
233
+ >> Plutus::Asset.create(:name => "Cash")
234
+ ```
193
235
 
194
236
  And out entry would be:
195
237
 
196
- entry = Plutus::Entry.build(
197
- :description => "Owner investing cash",
198
- :debits => [
199
- {:account => "Cash", :amount => 1000}],
200
- :credits => [
201
- {:account => "Common Stock", :amount => 1000}])
202
- entry.save
238
+ ```ruby
239
+ entry = Plutus::Entry.new(
240
+ :description => "Owner investing cash",
241
+ :debits => [
242
+ {:account_name => "Cash", :amount => 1000}],
243
+ :credits => [
244
+ {:account_name => "Common Stock", :amount => 1000}])
245
+ entry.save
246
+ ```
203
247
 
204
248
  In this case, we've increase our cash Asset, and simultaneously increased the other side of our accounting equation in
205
249
  Equity, keeping everything balanced.
206
250
 
251
+ Money & Currency Support
252
+ ========================
253
+
254
+ Plutus aims to be agnostic about the values used for amounts. All fields are maintained as BigDecimal values, with `:precision => 20, :scale => 10`, which means that any currency can be safely stored in the tables.
255
+
256
+ Plutus is also compatible with the [Money](https://github.com/RubyMoney/money) gem. With Money versions greater than 6.0, the `money.amount` will returns a BigDecimal which you can use with plutus as follows:
257
+
258
+ ```ruby
259
+ entry = Plutus::Entry.build(
260
+ :description => "Order placed for widgets",
261
+ :debits => [
262
+ {:account_name => "Cash", :amount => money.amount}],
263
+ :credits => [
264
+ {:account_name => "Unearned Revenue", :amount => money.amount}])
265
+ ```
266
+
207
267
  Multitenancy Support
208
268
  =====================
209
269
 
@@ -212,47 +272,61 @@ Plutus supports multitenant applications. Multitenancy is acheived by associatin
212
272
  - Generate the migration which will add `tenant_id` to the plutus accounts table
213
273
 
214
274
  ```sh
215
- bundle exec rails g plutus:tenancy
275
+ bundle exec rails g plutus:tenancy
216
276
  ```
217
277
 
218
278
  - Run the migration
219
279
 
220
280
  ```sh
221
- rake db:migrate
281
+ rake db:migrate
222
282
  ```
223
283
 
224
284
  - Add an initializer to your Rails application, i.e. `config/initializers/plutus.rb`
225
285
 
226
286
  ```ruby
227
- Plutus.config do |config|
228
- config.enable_tenancy = true
229
- config.tenant_class = 'Tenant'
230
- end
287
+ Plutus.config do |config|
288
+ config.enable_tenancy = true
289
+ config.tenant_class = 'Tenant'
290
+ end
231
291
  ```
292
+ *NOTE: When building entries, be sure to specify the account directly, rather than use the `account_name` feature. Otherwise you'll probably end up with the wrong account.*
232
293
 
233
- Access & Security
234
- =================
294
+ ```ruby
295
+ debit_account = Plutus::Account.where(:name => "Cash", :tenant => my_tenant).last
296
+ credit_account = Plutus::Account.where(:name => "Unearned Revenue", :tenant => my_tenant).last
297
+ entry = Plutus::Entry.new(
298
+ :description => "Order placed for widgets",
299
+ :date => Date.yesterday,
300
+ :debits => [
301
+ {:account => debit_account, :amount => 100.00}],
302
+ :credits => [
303
+ {:account => credit_account, :amount => 100.00}])
304
+ ```
235
305
 
236
- The Engine provides controllers and views for viewing Accounts and Entries via the `Plutus::AccountsController` and `Plutus::EntriesController` classes. The controllers will render HTML, XML and JSON.
306
+ Reporting Views
307
+ ===============
237
308
 
238
- These controllers are read-only for reporting purposes. It is assumed entry creation will occur within your applications code.
309
+ The Engine provides controllers and views for rendering basic reports, including a Balance Sheet and Income Statement.
310
+
311
+ These views and controllers are read-only for reporting purposes. It is assumed entry creation will occur within your applications code.
239
312
 
240
313
  Routing is supplied via an engine mount point. Plutus can be mounted on a subpath in your existing Rails 3 app by adding the following to your routes.rb:
241
314
 
242
- mount Plutus::Engine => "/plutus", :as => "plutus"
315
+ ```ruby
316
+ mount Plutus::Engine => "/plutus", :as => "plutus"
317
+ ```
243
318
 
244
- *NOTE: If you enable routing, you should ensure that your ApplicationController enforces its own authentication and authorization, which this controller will inherit.*
319
+ *NOTE: The `Plutus::ApplicationController` does not currently support authentication. If you enable routing, the views will be publicly available on your mount point. Authentication can be added by overriding the controller.*
245
320
 
246
- Sample stylesheets can also be applied by adding the following to your application layout:
321
+ *Future versions of plutus will allow for customization of authentication.*
247
322
 
248
- <%= stylesheet_link_tag "plutus/application" %>
249
323
 
250
324
  Previous Versions
251
325
  =================
252
326
 
253
327
  For the rails 3 version, you can go here:
254
328
 
255
- [https://github.com/mbulat/plutus](https://github.com/mbulat/plutus/tree/rails3)
329
+ [https://github.com/mbulat/plutus/tree/rails3](https://github.com/mbulat/plutus/tree/rails3)
256
330
 
257
331
  For the rails 2 version, you can go here:
258
332
 
@@ -261,25 +335,26 @@ For the rails 2 version, you can go here:
261
335
  * Gems in RubyGems.org >= 0.5.0 support Rails 3
262
336
  * Gems in RubyGems.org >= 0.8.0 support Rails 4
263
337
  * Gems in RubyGems.org >= 0.9.0 support Rails ~> 4.1
338
+ * Gems in RubyGems.org >= 0.13.0 support Rails ~> 5.0
264
339
 
265
- Upgrading from < 0.9
266
- --------------------
340
+ Upgrading from older versions
341
+ -----------------------------
267
342
 
268
- Versions of Plutus prior to 0.9 used a "Transaction" class to keep track of entries. Rails 4.1 introduced a change that
269
- raises an error with Plutus due to an ActiveRecord method conflict with "transaction". Therefore the Transaction class
270
- has been renamed "Entry". To generate a migration which will update your database run the following:
343
+ As Plutus is still in alpha, there have been some breaking changes with previous versions.
271
344
 
272
- - `rails g plutus:upgrade_plutus`
345
+ If you are upgrading, please check the Wiki for guides on how to properly upgrade plutus to deal with the changes:
273
346
 
274
- You only need to do this when upgrading a previously installed version of Plutus.
347
+ [Upgrade Notes](https://github.com/mbulat/plutus/wiki/Updrade-Notes)
275
348
 
276
349
  Testing
277
350
  =======
278
351
 
279
352
  [Rspec](http://rspec.info/) tests are provided. Run `bundle install` then `rake`.
280
353
 
281
- Contributors
282
- ============
354
+ Contributing and Contributors
355
+ =============================
356
+
357
+ There's a guide to contributing to Plutus (both code and general help) over in [CONTRIBUTING](https://github.com/mbulat/plutus/blob/master/CONTRIBUTING.md)
283
358
 
284
359
  Many thanks to all our contributors! Check them all at:
285
360
 
@@ -297,14 +372,12 @@ Plutus is free software, but if you'd like to support development, feel free to
297
372
 
298
373
  `1QFSdJheyFkLcsV8X428J8e3pYqX1nmW39`
299
374
 
300
- ![bitcoin](https://dl.dropboxusercontent.com/u/8428240/plutus_tip.png)
301
-
302
375
  Also, if anyone is using Plutus for bitcoin related accounting, I'd love to hear about it! Drop me a line.
303
376
 
304
377
  ToDo
305
378
  ====
306
379
 
307
- * Better views, including paging and ledgers
380
+ * Better views, including paging
308
381
  * Reference for common accounting entries
309
382
 
310
383
  Reference
@@ -316,4 +389,4 @@ For a complete reference on Accounting principles, we recommend the following te
316
389
 
317
390
  * * *
318
391
 
319
- Copyright (c) 2010-2012 Michael Bulat
392
+ Copyright (c) 2010-2016 Michael Bulat
@@ -2,14 +2,15 @@
2
2
  // listed below.
3
3
  //
4
4
  // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
5
- // or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
5
+ // or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
6
6
  //
7
7
  // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8
- // the compiled file.
8
+ // compiled file.
9
9
  //
10
- // WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
11
- // GO AFTER THE REQUIRES BELOW.
10
+ // Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
11
+ // about supported directives.
12
12
  //
13
13
  //= require jquery
14
14
  //= require jquery_ujs
15
+ //= require jquery-ui/widgets/datepicker
15
16
  //= require_tree .