plutus 0.10.1 → 0.15
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/README.markdown +172 -99
- data/app/assets/javascripts/plutus/application.js +5 -4
- data/app/assets/javascripts/plutus/reports.js +5 -0
- data/app/assets/stylesheets/bootstrap-theme.min.css +5 -0
- data/app/assets/stylesheets/bootstrap.min.css +5 -0
- data/app/assets/stylesheets/plutus/application.css +11 -5
- data/app/controllers/plutus/accounts_controller.rb +1 -16
- data/app/controllers/plutus/application_controller.rb +4 -0
- data/app/controllers/plutus/entries_controller.rb +7 -17
- data/app/controllers/plutus/reports_controller.rb +40 -0
- data/app/models/plutus/account.rb +92 -7
- data/app/models/plutus/amount.rb +11 -1
- data/app/models/plutus/amounts_extension.rb +31 -6
- data/app/models/plutus/asset.rb +21 -18
- data/app/models/plutus/entry.rb +28 -26
- data/app/models/plutus/equity.rb +22 -19
- data/app/models/plutus/expense.rb +21 -18
- data/app/models/plutus/liability.rb +27 -19
- data/app/models/plutus/revenue.rb +22 -19
- data/app/models/plutus/tenancy.rb +5 -1
- data/app/views/layouts/plutus/_messages.html.erb +9 -0
- data/app/views/layouts/plutus/_navigation.html.erb +19 -0
- data/app/views/layouts/plutus/_navigation_links.html.erb +5 -0
- data/app/views/layouts/plutus/application.html.erb +19 -0
- data/app/views/plutus/accounts/index.html.erb +9 -12
- data/app/views/plutus/entries/index.html.erb +22 -11
- data/app/views/plutus/reports/_account.html.erb +28 -0
- data/app/views/plutus/reports/balance_sheet.html.erb +21 -0
- data/app/views/plutus/reports/income_statement.html.erb +24 -0
- data/config/routes.rb +6 -3
- data/{lib/generators/plutus/templates/migration.rb → db/migrate/20160422010135_create_plutus_tables.rb} +6 -10
- data/lib/generators/plutus/add_date_upgrade_generator.rb +11 -0
- data/lib/generators/plutus/base_generator.rb +19 -0
- data/lib/generators/plutus/plutus_generator.rb +8 -22
- data/lib/generators/plutus/templates/add_date_migration.rb +12 -0
- data/lib/generators/plutus/templates/tenant_migration.rb +1 -1
- data/lib/generators/plutus/templates/update_migration.rb +2 -2
- data/lib/generators/plutus/tenancy_generator.rb +2 -17
- data/lib/generators/plutus/upgrade_plutus_generator.rb +6 -22
- data/lib/plutus.rb +2 -5
- data/lib/plutus/engine.rb +5 -0
- data/lib/plutus/version.rb +1 -1
- data/spec/controllers/accounts_controller_spec.rb +11 -20
- data/spec/controllers/entries_controller_spec.rb +11 -20
- data/spec/controllers/reports_controller_spec.rb +24 -0
- data/spec/factories/tenant_factory.rb +12 -0
- data/spec/models/account_spec.rb +79 -16
- data/spec/models/amount_spec.rb +6 -1
- data/spec/models/debit_amount_spec.rb +1 -1
- data/spec/models/entry_spec.rb +108 -29
- data/spec/models/tenancy_spec.rb +26 -8
- data/spec/routing/accounts_routing_spec.rb +6 -25
- data/spec/routing/entries_routing_spec.rb +6 -25
- data/spec/spec_helper.rb +5 -0
- data/spec/support/account_shared_examples.rb +14 -10
- data/spec/support/amount_shared_examples.rb +7 -7
- data/spec/support/shoulda_matchers.rb +8 -0
- metadata +100 -27
- data/app/views/plutus/accounts/show.html.erb +0 -59
- data/app/views/plutus/entries/show.html.erb +0 -46
- data/spec/schema.rb +0 -31
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: f8065148547846775eb69a045ab294f98229eba48276fdeff5db760534264d6b
|
4
|
+
data.tar.gz: a1ccfe5713169766bc4ff1582489b91113e404b47ee345f7cb809dfa155718c9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: abd85e610d29aa6ec688a89b6cc739aa6c3a8aae484908fa5fc85c65b1e162e1d2342316c2c282cfe4b773299251fcc0187776f9c14a04d9b07cd54546970490
|
7
|
+
data.tar.gz: 6df2d57b5a8972f40e2b065b94cb6b7cacd1edfba519d07105917c52dadf20a7b57f03a50d9060e5a37409c5e87e67d409ae7e111916739cfa2900af5c258fbb
|
data/README.markdown
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
Plutus
|
2
2
|
=================
|
3
|
-
[![Build Status](https://
|
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
|
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
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
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
|
-
|
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
|
-
|
79
|
-
|
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
|
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
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
104
|
-
|
105
|
-
|
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
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
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
|
-
|
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
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
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
|
-
|
147
|
-
|
148
|
-
|
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
|
-
|
157
|
-
|
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
|
-
|
165
|
-
|
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
|
-
|
177
|
-
|
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
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
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
|
-
|
192
|
-
|
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
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
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
|
-
|
275
|
+
bundle exec rails g plutus:tenancy
|
216
276
|
```
|
217
277
|
|
218
278
|
- Run the migration
|
219
279
|
|
220
280
|
```sh
|
221
|
-
|
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
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
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
|
-
|
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
|
-
|
306
|
+
Reporting Views
|
307
|
+
===============
|
237
308
|
|
238
|
-
|
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
|
-
|
315
|
+
```ruby
|
316
|
+
mount Plutus::Engine => "/plutus", :as => "plutus"
|
317
|
+
```
|
243
318
|
|
244
|
-
*NOTE: If you enable routing,
|
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
|
-
|
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
|
266
|
-
|
340
|
+
Upgrading from older versions
|
341
|
+
-----------------------------
|
267
342
|
|
268
|
-
|
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
|
-
|
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
|
-
|
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
|
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-
|
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
|
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
|
-
//
|
8
|
+
// compiled file.
|
9
9
|
//
|
10
|
-
//
|
11
|
-
//
|
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 .
|