double_entry 1.0.1 → 2.0.0.beta5

Sign up to get free protection for your applications and to get access to all the features.
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