double_entry 1.0.1 → 2.0.0.beta5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +497 -0
  3. data/README.md +107 -44
  4. data/double_entry.gemspec +22 -49
  5. data/lib/active_record/locking_extensions.rb +3 -3
  6. data/lib/active_record/locking_extensions/log_subscriber.rb +1 -1
  7. data/lib/double_entry.rb +29 -21
  8. data/lib/double_entry/account.rb +39 -46
  9. data/lib/double_entry/account_balance.rb +20 -3
  10. data/lib/double_entry/balance_calculator.rb +5 -5
  11. data/lib/double_entry/configurable.rb +1 -0
  12. data/lib/double_entry/configuration.rb +8 -2
  13. data/lib/double_entry/errors.rb +13 -13
  14. data/lib/double_entry/line.rb +7 -6
  15. data/lib/double_entry/locking.rb +5 -5
  16. data/lib/double_entry/transfer.rb +37 -30
  17. data/lib/double_entry/validation.rb +1 -0
  18. data/lib/double_entry/validation/account_fixer.rb +36 -0
  19. data/lib/double_entry/validation/line_check.rb +25 -43
  20. data/lib/double_entry/version.rb +1 -1
  21. data/lib/generators/double_entry/install/install_generator.rb +22 -1
  22. data/lib/generators/double_entry/install/templates/initializer.rb +20 -0
  23. data/lib/generators/double_entry/install/templates/migration.rb +45 -55
  24. metadata +35 -256
  25. data/.gitignore +0 -32
  26. data/.rspec +0 -2
  27. data/.travis.yml +0 -29
  28. data/.yardopts +0 -2
  29. data/Gemfile +0 -2
  30. data/Rakefile +0 -15
  31. data/lib/double_entry/reporting.rb +0 -181
  32. data/lib/double_entry/reporting/aggregate.rb +0 -110
  33. data/lib/double_entry/reporting/aggregate_array.rb +0 -76
  34. data/lib/double_entry/reporting/day_range.rb +0 -42
  35. data/lib/double_entry/reporting/hour_range.rb +0 -45
  36. data/lib/double_entry/reporting/line_aggregate.rb +0 -16
  37. data/lib/double_entry/reporting/line_aggregate_filter.rb +0 -79
  38. data/lib/double_entry/reporting/month_range.rb +0 -94
  39. data/lib/double_entry/reporting/time_range.rb +0 -59
  40. data/lib/double_entry/reporting/time_range_array.rb +0 -49
  41. data/lib/double_entry/reporting/week_range.rb +0 -107
  42. data/lib/double_entry/reporting/year_range.rb +0 -40
  43. data/script/jack_hammer +0 -210
  44. data/script/setup.sh +0 -8
  45. data/spec/active_record/locking_extensions_spec.rb +0 -110
  46. data/spec/double_entry/account_balance_spec.rb +0 -7
  47. data/spec/double_entry/account_spec.rb +0 -130
  48. data/spec/double_entry/balance_calculator_spec.rb +0 -88
  49. data/spec/double_entry/configuration_spec.rb +0 -50
  50. data/spec/double_entry/line_spec.rb +0 -80
  51. data/spec/double_entry/locking_spec.rb +0 -214
  52. data/spec/double_entry/performance/double_entry_performance_spec.rb +0 -32
  53. data/spec/double_entry/performance/reporting/aggregate_performance_spec.rb +0 -50
  54. data/spec/double_entry/reporting/aggregate_array_spec.rb +0 -123
  55. data/spec/double_entry/reporting/aggregate_spec.rb +0 -205
  56. data/spec/double_entry/reporting/line_aggregate_filter_spec.rb +0 -90
  57. data/spec/double_entry/reporting/line_aggregate_spec.rb +0 -39
  58. data/spec/double_entry/reporting/month_range_spec.rb +0 -139
  59. data/spec/double_entry/reporting/time_range_array_spec.rb +0 -169
  60. data/spec/double_entry/reporting/time_range_spec.rb +0 -45
  61. data/spec/double_entry/reporting/week_range_spec.rb +0 -103
  62. data/spec/double_entry/reporting_spec.rb +0 -181
  63. data/spec/double_entry/transfer_spec.rb +0 -93
  64. data/spec/double_entry/validation/line_check_spec.rb +0 -99
  65. data/spec/double_entry_spec.rb +0 -428
  66. data/spec/generators/double_entry/install/install_generator_spec.rb +0 -30
  67. data/spec/spec_helper.rb +0 -118
  68. data/spec/support/accounts.rb +0 -21
  69. data/spec/support/blueprints.rb +0 -43
  70. data/spec/support/database.example.yml +0 -21
  71. data/spec/support/database.travis.yml +0 -24
  72. data/spec/support/double_entry_spec_helper.rb +0 -27
  73. data/spec/support/gemfiles/Gemfile.rails-3.2.x +0 -8
  74. data/spec/support/gemfiles/Gemfile.rails-4.1.x +0 -6
  75. data/spec/support/gemfiles/Gemfile.rails-4.2.x +0 -5
  76. data/spec/support/gemfiles/Gemfile.rails-5.0.x +0 -5
  77. data/spec/support/performance_helper.rb +0 -26
  78. data/spec/support/reporting_configuration.rb +0 -6
  79. data/spec/support/schema.rb +0 -74
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 4d879d4baf12d4479b4533fb5032c27c0ef4968f
4
- data.tar.gz: dfeda86d6a9147c2cb99313c3136f1fe2bbe3ca3
2
+ SHA256:
3
+ metadata.gz: 3fac339d10077ee1c807e16d37f4aa6bd7ad4d6179f8f94b4ad114085e83b83a
4
+ data.tar.gz: 5f50033972098dfada8195c0bd17923005f2e0601ed1a694cf25c43080d2f939
5
5
  SHA512:
6
- metadata.gz: 4415c2eae26420297541d515cabf79eb2eb7833c10c4984724e391d9f3ebad20f86178837fad21ee91baebf9ee57332554c617a2ab3cb856375b21df9a92dc07
7
- data.tar.gz: 45c892f2e32784e8aefcbadb014372729e59ce9089c7ab5ebd075679b50be04a87bc5b81f9c00638dca4d79466cd18a6390f8b970a24ed9377d3eaabf89d83b3
6
+ metadata.gz: 2fb0041f4cf1af34416a5af798d1b7b32675565f39f9f0abec80d40d1ad30159dc1fe716427a41a43c1c608f9b1cd8ff63c998ee2c974895a28c873ba0e7250e
7
+ data.tar.gz: 66be7ef0d59ca846b5c9c588d68dd72be1577c2ef03069fc93d148ec7bc821aaf265b66ae75ad1cece6649d1605412f41f3e81284ba2d29c513804f6484af368
data/CHANGELOG.md ADDED
@@ -0,0 +1,497 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
6
+ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [2.0.0.beta5] - 2020-01-25
11
+
12
+ ### Changed
13
+
14
+ - Use the Ruby 1.9 hash syntax ([#182]).
15
+ - Make the Line detail association optional ([#184]).
16
+ - Support Ruby 3 ([#196]).
17
+
18
+ [#182]: https://github.com/envato/double_entry/pull/182
19
+ [#184]: https://github.com/envato/double_entry/pull/184
20
+ [#196]: https://github.com/envato/double_entry/pull/196
21
+
22
+ ## [2.0.0.beta4] - 2020-01-25
23
+
24
+ ### Added
25
+
26
+ - Test against Rails 6.0, ([#176]).
27
+
28
+ - Support for Ruby 2.7 ([#180]).
29
+
30
+ ### Changed
31
+
32
+ - Metadata stored by default in a json(b) column for new installs ([#178]).
33
+
34
+ - Remove `force: true` from migration ([#181]).
35
+
36
+ - Prevent using Ruby 2.2 via restrictions in Gemfile and Gemspec ([#175]).
37
+
38
+ [#175]: https://github.com/envato/double_entry/pull/175
39
+ [#176]: https://github.com/envato/double_entry/pull/176
40
+ [#178]: https://github.com/envato/double_entry/pull/178
41
+ [#180]: https://github.com/envato/double_entry/pull/180
42
+ [#181]: https://github.com/envato/double_entry/pull/181
43
+
44
+ ## [2.0.0.beta3] - 2019-11-14
45
+
46
+ ### Fixed
47
+
48
+ - Remove duplicate detail columns in `double_entry_lines` table migration, ([#173]).
49
+
50
+ [#173]: https://github.com/envato/double_entry/pull/173
51
+
52
+ ## [2.0.0.beta2] - 2019-01-27
53
+
54
+ ### Removed
55
+
56
+ - Extract `DoubleEntry::Reporting` module to a separate gem:
57
+ [`double_entry-reporting`](https://github.com/envato/double_entry-reporting).
58
+
59
+ If this module is in use in your project add the `double_entry-reporting` gem
60
+ and checkout the
61
+ [changelog](https://github.com/envato/double_entry-reporting/blob/master/CHANGELOG.md)
62
+ for more updates.
63
+
64
+ If not in use, one can delete the `double_entry_line_aggregates` table using
65
+ the following migration:
66
+
67
+ ```ruby
68
+ drop_table :double_entry_line_aggregates
69
+ ```
70
+
71
+ ## [2.0.0.beta1] - 2018-12-31
72
+
73
+ ### Added
74
+
75
+ - Added contributor credits to README.
76
+
77
+ - Added support for Ruby 2.3, 2.4, 2.5 and 2.6.
78
+
79
+ - Added support for Rails 5.0, 5.1 and 5.2
80
+
81
+ - Support passing an array of metadata values.
82
+
83
+ ```ruby
84
+ DoubleEntry.transfer(
85
+ Money.new(20_00),
86
+ :from => one_account,
87
+ :to => another_account,
88
+ :code => :a_business_code_for_this_type_of_transfer,
89
+ :metadata => { :key1 => ['value 1', 'value 2'], :key2 => 'value 3' },
90
+ )
91
+ ```
92
+
93
+ - Allow partner account to be specified for aggregates.
94
+
95
+ - Allow filtering aggregates by multiple metadata key/value pairs.
96
+
97
+ - Add index on the `double_entry_line_checks` table. This covers the query to
98
+ obtain the last line check.
99
+
100
+ Add this index to your database via a migration like:
101
+
102
+ ```ruby
103
+ def up
104
+ add_index "double_entry_line_checks", ["created_at", "last_line_id"], :name => "line_checks_created_at_last_line_id_idx"
105
+ end
106
+ ```
107
+
108
+ - Log account balance cache errors to the database when performing the line check:
109
+ `DoubleEntry::Validation::LineCheck::perform!`
110
+
111
+ ### Changed
112
+
113
+ - Replaced Machinist with Factory Bot in test suite.
114
+
115
+ - Implement `DoubleEntry::Transfer::Set` and `DoubleEntry::Account::Set` with
116
+ `Hash`es rather than `Array`s for performance.
117
+
118
+ - Reporting API now uses keyword arguments. Note these reporting classes are
119
+ marked API private: their interface is not considered stable.
120
+ - `DoubleEntry::Reporting::aggregate`
121
+ - `DoubleEntry::Reporting::aggregate_array`
122
+ - `DoubleEntry::Reporting::Aggregate::new`
123
+ - `DoubleEntry::Reporting::Aggregate::formatted_amount`
124
+ - `DoubleEntry::Reporting::AggregateArray::new`
125
+ - `DoubleEntry::Reporting::LineAggregateFilter::new`
126
+
127
+ - Loosened database string column contstraints to the default (255 characters).
128
+ Engineering teams can choose to apply this change, or apply their own column
129
+ length constraints specific to their needs. ([#152])
130
+
131
+ - Removed default values for the length checks on `code`, `account` and `scope`
132
+ ([#152]). These checks will now only be performed when configured with a value:
133
+
134
+ ```ruby
135
+ DoubleEntry.configure do |config|
136
+ config.code_max_length = 47
137
+ config.account_identifier_max_length = 31
138
+ config.scope_identifier_max_length = 23
139
+ end
140
+ ```
141
+ - Use `bigint` for monetary values in the database to avoid integer overflow
142
+ ([#154]). Apply changes via this migration:
143
+
144
+ ```ruby
145
+ change_column :double_entry_account_balances, :balance, :bigint, null: false
146
+
147
+ change_column :double_entry_line_aggregates, :amount, :bigint, null: false
148
+
149
+ change_column :double_entry_lines, :amount, :bigint, null: false
150
+ change_column :double_entry_lines, :balance, :bigint, null: false
151
+ ```
152
+ - On Rails version 5.1 and above, use `bigint` for foreign key values in the
153
+ database to avoid integer overflow ([#154]). Apply changes via this
154
+ migration:
155
+
156
+ ```ruby
157
+ change_column :double_entry_line_checks, :last_line_id, :bigint, null: false
158
+
159
+ change_column :double_entry_line_metadata, :line_id, :bigint, null: false
160
+
161
+ change_column :double_entry_lines, :partner_id, :bigint, null: true
162
+ change_column :double_entry_lines, :detail_id, :bigint, null: true
163
+ ```
164
+
165
+ - Line check validation no-longer performs corrections by default. The
166
+ `DoubleEntry::Validation::LineCheck::perform!` method will only log validation
167
+ failures in the database. To perform auto-correction pass the `fixer` option:
168
+ `LineCheck.perform!(fixer: DoubleEntry::Validation::AccountFixer.new)`
169
+
170
+ ### Removed
171
+
172
+ - Removed support for Ruby 1.9, 2.0, 2.1 and 2.2.
173
+
174
+ - Removed support for Rails 3.2, 4.0, and 4.1.
175
+
176
+ - Removed unneeded development dependencies from Gemspec.
177
+
178
+ - Removed spec and script files from gem package.
179
+
180
+ - Removed the `active_record_scope_identifier` method for configuring scoped accounts.
181
+
182
+ ```ruby
183
+ user_scope = accounts.active_record_scope_identifier(User)
184
+ ```
185
+
186
+ As a replacement, please define your own with a lambda:
187
+
188
+ ```ruby
189
+ user_scope = ->(user) do
190
+ raise 'not a User' unless user.class.name == 'User'
191
+ user.id
192
+ end
193
+ ```
194
+
195
+ ### Fixed
196
+
197
+ - Fixed more Ruby warnings.
198
+
199
+ - Use `double_entry` namespace when publishing to
200
+ `ActiveSupport::Notifications`.
201
+
202
+ - Fixed problem of Rails version number not being set in migration template for apps using Rails 5 or higher.
203
+
204
+ [#152]: https://github.com/envato/double_entry/pull/152
205
+ [#154]: https://github.com/envato/double_entry/pull/154
206
+
207
+ ## [1.0.1] - 2018-01-06
208
+
209
+ ### Removed
210
+
211
+ - Removed Rubocop checks and build step.
212
+
213
+ ### Fixed
214
+
215
+ - Use `Money#positive?` and `Money#negative?` rather than comparing to zero.
216
+ Resolves issues when dealing with multiple currencies.
217
+
218
+ - Fixed typo in jack_hammer documentation.
219
+
220
+ ## [1.0.0] - 2015-08-04
221
+
222
+ ### Added
223
+
224
+ - Record meta-data against transfers.
225
+
226
+ ```ruby
227
+ DoubleEntry.transfer(
228
+ Money.new(20_00),
229
+ :from => one_account,
230
+ :to => another_account,
231
+ :code => :a_business_code_for_this_type_of_transfer,
232
+ :metadata => { :key1 => 'value 1', :key2 => 'value 2' },
233
+ )
234
+ ```
235
+
236
+ This feature requires a new DB table. Please add a migration similar to:
237
+
238
+ ```ruby
239
+ class CreateDoubleEntryLineMetadata < ActiveRecord::Migration
240
+ def self.up
241
+ create_table "#{DoubleEntry.table_name_prefix}line_metadata", :force => true do |t|
242
+ t.integer "line_id", :null => false
243
+ t.string "key", :limit => 48, :null => false
244
+ t.string "value", :limit => 64, :null => false
245
+ t.timestamps :null => false
246
+ end
247
+
248
+ add_index "#{DoubleEntry.table_name_prefix}line_metadata",
249
+ ["line_id", "key", "value"],
250
+ :name => "lines_meta_line_id_key_value_idx"
251
+ end
252
+
253
+ def self.down
254
+ drop_table "#{DoubleEntry.table_name_prefix}line_metadata"
255
+ end
256
+ end
257
+ ```
258
+
259
+ ### Changed
260
+
261
+ - Raise `DoubleEntry::Locking::LockWaitTimeout` for lock wait timeouts.
262
+
263
+ ### Fixed
264
+
265
+ - Ensure that a range is specified when performing an aggregate function over
266
+ lines.
267
+
268
+ ## [0.10.3] - 2015-07-15
269
+
270
+ ### Added
271
+
272
+ - Check code format with Rubocop as part of the CI build.
273
+
274
+ ### Fixed
275
+
276
+ - More Rubocop code formatting issues fixed.
277
+
278
+ ## [0.10.2] - 2015-07-10
279
+
280
+ ### Fixed
281
+
282
+ - `DoubleEntry::Reporting::AggregateArray` correctly retreives previously
283
+ calculated aggregates.
284
+
285
+ ## [0.10.1] - 2015-07-06
286
+
287
+ ### Added
288
+
289
+ - Run CI build against Ruby 2.2.0.
290
+
291
+ - Added Rubocop and resolved code formatting issues.
292
+
293
+ ### Changed
294
+
295
+ - Reduced permutations of DB, Ruby and Rails in CI build.
296
+
297
+ - Build status badge displayed in README reports on just the master branch.
298
+
299
+ - Update RSpec configuration with latest recommended options.
300
+
301
+ ### Fixed
302
+
303
+ - Addressed Ruby warnings.
304
+
305
+ - Fixed circular arg reference.
306
+
307
+ ## [0.10.0] - 2015-01-09
308
+
309
+ ### Added
310
+
311
+ - Define accounts that can be negative only.
312
+
313
+ ```ruby
314
+ DoubleEntry.configure do |config|
315
+ config.define_accounts do |accounts|
316
+ accounts.define(
317
+ :identifier => :my_account_that_never_goes_positive,
318
+ :negative_only => true
319
+ )
320
+ end
321
+ end
322
+ ```
323
+
324
+ - Run CI build against Rails 4.2
325
+
326
+ ## [0.9.0] - 2014-12-08
327
+
328
+ ### Changed
329
+
330
+ - `DoubleEntry::Reporting::Agregate#formated_amount` no longer accepts
331
+ `currency` argument.
332
+
333
+ ## [0.8.0] - 2014-11-19
334
+
335
+ ### Added
336
+
337
+ - Log when we encounter deadlocks causing restart/retry.
338
+
339
+ ## [0.7.2] - 2014-11-18
340
+
341
+ ### Removed
342
+
343
+ - Removed `DoubleEntry::currency` method.
344
+
345
+ ## [0.7.1] - 2014-11-17
346
+
347
+ ### Fixed
348
+
349
+ - `DoubleEntry::balance` and `DoubleEntry::account` now raise
350
+ `DoubleEntry::AccountScopeMismatchError` if the scope provided is not of
351
+ the same type in the account definition.
352
+
353
+ - Speed up CI build.
354
+
355
+ ## [0.7.0] - 2014-11-12
356
+
357
+ ### Added
358
+
359
+ - Added support for currency. :money_with_wings:
360
+
361
+ ### Changed
362
+
363
+ - Require at least version 6.0 of Money gem.
364
+
365
+ ## [0.6.1] - 2014-10-10
366
+
367
+ ### Changed
368
+
369
+ - Removed use of Active Record callbacks in `DoubleEntry::Line`.
370
+
371
+ - Changed `DoubleEntry::Reporting::WeekRange` calculation to use
372
+ `Date#cweek`.
373
+
374
+ ## [0.6.0] - 2014-08-23
375
+
376
+ ### Fixed
377
+
378
+ - Fixed defect preventing locking a scoped and a non scoped account.
379
+
380
+ ## [0.5.0] - 2014-08-01
381
+
382
+ ### Added
383
+
384
+ - Added a convenience method for defining active record scope identifiers.
385
+
386
+ ```ruby
387
+ DoubleEntry.configure do |config|
388
+ config.define_accounts do |accounts|
389
+ user_scope = accounts.active_record_scope_identifier(User)
390
+ accounts.define(:identifier => :checking, :scope_identifier => user_scope)
391
+ end
392
+ end
393
+ ```
394
+
395
+ - Added support for SQLite.
396
+
397
+ ### Removed
398
+
399
+ - Removed errors: `DoubleEntry::RequiredMetaMissing` and
400
+ `DoubleEntry::UserAccountNotLocked`.
401
+
402
+ ### Fixed
403
+
404
+ - Fixed `Reporting::reconciled?` support for account scopes.
405
+
406
+ ## [0.4.0] - 2014-07-17
407
+
408
+ ### Added
409
+
410
+ - Added Yardoc documention to the `DoubleEntry::balance` method.
411
+
412
+ ### Changed
413
+
414
+ - Changed `Line#debit?` to `Line#increase?` and `Line#credit?` to
415
+ `Line#decrease?`.
416
+
417
+ ### Removed
418
+
419
+ - Removed the `DoubleEntry::Line#meta` attribute.
420
+
421
+ ## [0.3.1] - 2014-07-11
422
+
423
+ ### Fixed
424
+
425
+ - Obtain a year range array without prioviding a start date.
426
+
427
+ ## [0.3.0] - 2014-07-11
428
+
429
+ ### Added
430
+
431
+ - Add Yardoc to `Reporting` module.
432
+ - Allow reporting month and year time ranges without a start date.
433
+
434
+ ### Changed
435
+
436
+ - Use ruby18 hash syntax for configuration example in README.
437
+
438
+ ### Removed
439
+
440
+ - Removed `DoubleEntry::describe` and `DoubleEntry::Line#description`
441
+ methods.
442
+
443
+ ## [0.2.0] - 2014-06-28
444
+
445
+ ### Added
446
+
447
+ - Added a configuration class to define valid accounts and transfers.
448
+
449
+ ```ruby
450
+ DoubleEntry.configure do |config|
451
+ config.define_accounts do |accounts|
452
+ accounts.define(identifier: :savings, positive_only: true)
453
+ accounts.define(identifier: :checking)
454
+ end
455
+
456
+ config.define_transfers do |transfers|
457
+ transfers.define(from: :checking, to: :savings, code: :deposit)
458
+ transfers.define(from: :savings, to: :checking, code: :withdraw)
459
+ end
460
+ end
461
+ ```
462
+
463
+ ### Changed
464
+
465
+ - Move reporting classes into the `DoubleEntry::Reporting` namespace. Mark
466
+ this module as `@api private`: internal use only.
467
+
468
+ ## 0.1.0 - 2014-06-20
469
+
470
+ ### Added
471
+
472
+ - Library released as Open Source!
473
+
474
+ [Unreleased]: https://github.com/envato/double_entry/compare/v2.0.0.beta5...HEAD
475
+ [2.0.0.beta5]: https://github.com/envato/double_entry/compare/v2.0.0.beta4...v2.0.0.beta5
476
+ [2.0.0.beta4]: https://github.com/envato/double_entry/compare/v2.0.0.beta3...v2.0.0.beta4
477
+ [2.0.0.beta3]: https://github.com/envato/double_entry/compare/v2.0.0.beta2...v2.0.0.beta3
478
+ [2.0.0.beta2]: https://github.com/envato/double_entry/compare/v2.0.0.beta1...v2.0.0.beta2
479
+ [2.0.0.beta1]: https://github.com/envato/double_entry/compare/v1.0.1...v2.0.0.beta1
480
+ [1.0.1]: https://github.com/envato/double_entry/compare/v1.0.0...v1.0.1
481
+ [1.0.0]: https://github.com/envato/double_entry/compare/v0.10.3...v1.0.0
482
+ [0.10.3]: https://github.com/envato/double_entry/compare/v0.10.2...v0.10.3
483
+ [0.10.2]: https://github.com/envato/double_entry/compare/v0.10.1...v0.10.2
484
+ [0.10.1]: https://github.com/envato/double_entry/compare/v0.10.0...v0.10.1
485
+ [0.10.0]: https://github.com/envato/double_entry/compare/v0.9.0...v0.10.0
486
+ [0.9.0]: https://github.com/envato/double_entry/compare/v0.8.0...v0.9.0
487
+ [0.8.0]: https://github.com/envato/double_entry/compare/v0.7.2...v0.8.0
488
+ [0.7.2]: https://github.com/envato/double_entry/compare/v0.7.1...v0.7.2
489
+ [0.7.1]: https://github.com/envato/double_entry/compare/v0.7.0...v0.7.1
490
+ [0.7.0]: https://github.com/envato/double_entry/compare/v0.6.1...v0.7.0
491
+ [0.6.1]: https://github.com/envato/double_entry/compare/v0.6.0...v0.6.1
492
+ [0.6.0]: https://github.com/envato/double_entry/compare/v0.5.0...v0.6.0
493
+ [0.5.0]: https://github.com/envato/double_entry/compare/v0.4.0...v0.5.0
494
+ [0.4.0]: https://github.com/envato/double_entry/compare/v0.3.1...v0.4.0
495
+ [0.3.1]: https://github.com/envato/double_entry/compare/v0.3.0...v0.3.1
496
+ [0.3.0]: https://github.com/envato/double_entry/compare/v0.2.0...v0.3.0
497
+ [0.2.0]: https://github.com/envato/double_entry/compare/v0.1.0...v0.2.0