rvgp 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (97) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +8 -0
  3. data/.rubocop.yml +23 -0
  4. data/LICENSE +504 -0
  5. data/README.md +223 -0
  6. data/Rakefile +32 -0
  7. data/bin/rvgp +8 -0
  8. data/lib/rvgp/application/config.rb +159 -0
  9. data/lib/rvgp/application/descendant_registry.rb +122 -0
  10. data/lib/rvgp/application/status_output.rb +139 -0
  11. data/lib/rvgp/application.rb +170 -0
  12. data/lib/rvgp/base/command.rb +457 -0
  13. data/lib/rvgp/base/grid.rb +531 -0
  14. data/lib/rvgp/base/reader.rb +29 -0
  15. data/lib/rvgp/base/reconciler.rb +434 -0
  16. data/lib/rvgp/base/validation.rb +261 -0
  17. data/lib/rvgp/commands/cashflow.rb +160 -0
  18. data/lib/rvgp/commands/grid.rb +70 -0
  19. data/lib/rvgp/commands/ireconcile.rb +95 -0
  20. data/lib/rvgp/commands/new_project.rb +296 -0
  21. data/lib/rvgp/commands/plot.rb +41 -0
  22. data/lib/rvgp/commands/publish_gsheets.rb +83 -0
  23. data/lib/rvgp/commands/reconcile.rb +58 -0
  24. data/lib/rvgp/commands/rotate_year.rb +202 -0
  25. data/lib/rvgp/commands/validate_journal.rb +59 -0
  26. data/lib/rvgp/commands/validate_system.rb +44 -0
  27. data/lib/rvgp/commands.rb +160 -0
  28. data/lib/rvgp/dashboard.rb +252 -0
  29. data/lib/rvgp/fakers/fake_feed.rb +245 -0
  30. data/lib/rvgp/fakers/fake_journal.rb +57 -0
  31. data/lib/rvgp/fakers/fake_reconciler.rb +88 -0
  32. data/lib/rvgp/fakers/faker_helpers.rb +25 -0
  33. data/lib/rvgp/gem.rb +80 -0
  34. data/lib/rvgp/journal/commodity.rb +453 -0
  35. data/lib/rvgp/journal/complex_commodity.rb +214 -0
  36. data/lib/rvgp/journal/currency.rb +101 -0
  37. data/lib/rvgp/journal/journal.rb +141 -0
  38. data/lib/rvgp/journal/posting.rb +156 -0
  39. data/lib/rvgp/journal/pricer.rb +267 -0
  40. data/lib/rvgp/journal.rb +24 -0
  41. data/lib/rvgp/plot/gnuplot.rb +478 -0
  42. data/lib/rvgp/plot/google-drive/output_csv.rb +44 -0
  43. data/lib/rvgp/plot/google-drive/output_google_sheets.rb +434 -0
  44. data/lib/rvgp/plot/google-drive/sheet.rb +67 -0
  45. data/lib/rvgp/plot.rb +293 -0
  46. data/lib/rvgp/pta/hledger.rb +237 -0
  47. data/lib/rvgp/pta/ledger.rb +308 -0
  48. data/lib/rvgp/pta.rb +311 -0
  49. data/lib/rvgp/reconcilers/csv_reconciler.rb +424 -0
  50. data/lib/rvgp/reconcilers/journal_reconciler.rb +41 -0
  51. data/lib/rvgp/reconcilers/shorthand/finance_gem_hacks.rb +48 -0
  52. data/lib/rvgp/reconcilers/shorthand/international_atm.rb +152 -0
  53. data/lib/rvgp/reconcilers/shorthand/investment.rb +144 -0
  54. data/lib/rvgp/reconcilers/shorthand/mortgage.rb +195 -0
  55. data/lib/rvgp/utilities/grid_query.rb +190 -0
  56. data/lib/rvgp/utilities/yaml.rb +131 -0
  57. data/lib/rvgp/utilities.rb +44 -0
  58. data/lib/rvgp/validations/balance_validation.rb +68 -0
  59. data/lib/rvgp/validations/duplicate_tags_validation.rb +48 -0
  60. data/lib/rvgp/validations/uncategorized_validation.rb +15 -0
  61. data/lib/rvgp.rb +66 -0
  62. data/resources/README.MD/2022-cashflow-google.png +0 -0
  63. data/resources/README.MD/2022-cashflow.png +0 -0
  64. data/resources/README.MD/all-wealth-growth-google.png +0 -0
  65. data/resources/README.MD/all-wealth-growth.png +0 -0
  66. data/resources/gnuplot/default.yml +80 -0
  67. data/resources/i18n/en.yml +192 -0
  68. data/resources/iso-4217-currencies.json +171 -0
  69. data/resources/skel/Rakefile +5 -0
  70. data/resources/skel/app/grids/cashflow_grid.rb +27 -0
  71. data/resources/skel/app/grids/monthly_income_and_expenses_grid.rb +25 -0
  72. data/resources/skel/app/grids/wealth_growth_grid.rb +35 -0
  73. data/resources/skel/app/plots/cashflow.yml +33 -0
  74. data/resources/skel/app/plots/monthly-income-and-expenses.yml +17 -0
  75. data/resources/skel/app/plots/wealth-growth.yml +20 -0
  76. data/resources/skel/config/csv-format-acme-checking.yml +9 -0
  77. data/resources/skel/config/google-secrets.yml +5 -0
  78. data/resources/skel/config/rvgp.yml +0 -0
  79. data/resources/skel/journals/prices.db +0 -0
  80. data/rvgp.gemspec +6 -0
  81. data/test/assets/ledger_total_monthly_liabilities_with_empty.xml +383 -0
  82. data/test/assets/ledger_total_monthly_liabilities_with_empty2.xml +428 -0
  83. data/test/test_command_base.rb +61 -0
  84. data/test/test_commodity.rb +270 -0
  85. data/test/test_csv_reconciler.rb +60 -0
  86. data/test/test_currency.rb +24 -0
  87. data/test/test_fake_feed.rb +228 -0
  88. data/test/test_fake_journal.rb +98 -0
  89. data/test/test_fake_reconciler.rb +60 -0
  90. data/test/test_journal_parse.rb +545 -0
  91. data/test/test_ledger.rb +102 -0
  92. data/test/test_plot.rb +133 -0
  93. data/test/test_posting.rb +50 -0
  94. data/test/test_pricer.rb +139 -0
  95. data/test/test_pta_adapter.rb +575 -0
  96. data/test/test_utilities.rb +45 -0
  97. metadata +268 -0
@@ -0,0 +1,383 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <ledger version="197378">
3
+ <commodities>
4
+ <commodity flags="P">
5
+ <symbol/>
6
+ </commodity>
7
+ <commodity flags="PS">
8
+ <symbol>$</symbol>
9
+ </commodity>
10
+ </commodities>
11
+ <accounts>
12
+ <account id="0000564d3f0f0c80">
13
+ <name/>
14
+ <fullname/>
15
+ <account-total>
16
+ <amount>
17
+ <commodity flags="PS">
18
+ <symbol>$</symbol>
19
+ </commodity>
20
+ <quantity>3072.29</quantity>
21
+ </amount>
22
+ </account-total>
23
+ <account id="0000564d3f101390">
24
+ <name>Personal</name>
25
+ <fullname>Personal</fullname>
26
+ <account-total>
27
+ <amount>
28
+ <commodity flags="PS">
29
+ <symbol>$</symbol>
30
+ </commodity>
31
+ <quantity>3072.29</quantity>
32
+ </amount>
33
+ </account-total>
34
+ <account/>
35
+ <account/>
36
+ <account/>
37
+ <account/>
38
+ <account id="0000564d3f101770">
39
+ <name>Liabilities</name>
40
+ <fullname>Personal:Liabilities</fullname>
41
+ <account-total>
42
+ <amount>
43
+ <commodity flags="PS">
44
+ <symbol>$</symbol>
45
+ </commodity>
46
+ <quantity>3072.29</quantity>
47
+ </amount>
48
+ </account-total>
49
+ <account id="0000564d3f101b50">
50
+ <name>AmericanExpress</name>
51
+ <fullname>Personal:Liabilities:AmericanExpress</fullname>
52
+ <account-amount>
53
+ <amount>
54
+ <commodity flags="PS">
55
+ <symbol>$</symbol>
56
+ </commodity>
57
+ <quantity>3072.29</quantity>
58
+ </amount>
59
+ </account-amount>
60
+ <account-total>
61
+ <amount>
62
+ <commodity flags="PS">
63
+ <symbol>$</symbol>
64
+ </commodity>
65
+ <quantity>3072.29</quantity>
66
+ </amount>
67
+ </account-total>
68
+ </account>
69
+ </account>
70
+ </account>
71
+ </account>
72
+ </accounts>
73
+ <transactions>
74
+ <transaction>
75
+ <date>2020/01/01</date>
76
+ <payee>- 20-Jan-31</payee>
77
+ <postings>
78
+ <posting generated="true">
79
+ <account ref="0000564d3f0fee20">
80
+ <name>&lt;None&gt;</name>
81
+ </account>
82
+ <post-amount>
83
+ <amount>
84
+ <quantity>0</quantity>
85
+ </amount>
86
+ </post-amount>
87
+ <total>
88
+ <balance>
89
+ <amount>
90
+ <commodity flags="PS">
91
+ <symbol>$</symbol>
92
+ </commodity>
93
+ <quantity>-10675.18</quantity>
94
+ </amount>
95
+ </balance>
96
+ </total>
97
+ </posting>
98
+ </postings>
99
+ </transaction>
100
+ <transaction>
101
+ <date>2020/02/01</date>
102
+ <payee>- 20-Feb-29</payee>
103
+ <postings>
104
+ <posting generated="true">
105
+ <account ref="0000564d3f101b50">
106
+ <name>Personal:Liabilities:AmericanExpress</name>
107
+ </account>
108
+ <post-amount>
109
+ <amount>
110
+ <commodity flags="PS">
111
+ <symbol>$</symbol>
112
+ </commodity>
113
+ <quantity>303.72</quantity>
114
+ </amount>
115
+ </post-amount>
116
+ <total>
117
+ <balance>
118
+ <amount>
119
+ <commodity flags="PS">
120
+ <symbol>$</symbol>
121
+ </commodity>
122
+ <quantity>-10371.46</quantity>
123
+ </amount>
124
+ </balance>
125
+ </total>
126
+ </posting>
127
+ </postings>
128
+ </transaction>
129
+ <transaction>
130
+ <date>2020/03/01</date>
131
+ <payee>- 20-Mar-31</payee>
132
+ <postings>
133
+ <posting generated="true">
134
+ <account ref="0000564d3f0fee20">
135
+ <name>&lt;None&gt;</name>
136
+ </account>
137
+ <post-amount>
138
+ <amount>
139
+ <quantity>0</quantity>
140
+ </amount>
141
+ </post-amount>
142
+ <total>
143
+ <balance>
144
+ <amount>
145
+ <commodity flags="PS">
146
+ <symbol>$</symbol>
147
+ </commodity>
148
+ <quantity>-10371.46</quantity>
149
+ </amount>
150
+ </balance>
151
+ </total>
152
+ </posting>
153
+ </postings>
154
+ </transaction>
155
+ <transaction>
156
+ <date>2020/04/01</date>
157
+ <payee>- 20-Apr-30</payee>
158
+ <postings>
159
+ <posting generated="true">
160
+ <account ref="0000564d3f101b50">
161
+ <name>Personal:Liabilities:AmericanExpress</name>
162
+ </account>
163
+ <post-amount>
164
+ <amount>
165
+ <commodity flags="PS">
166
+ <symbol>$</symbol>
167
+ </commodity>
168
+ <quantity>661.01</quantity>
169
+ </amount>
170
+ </post-amount>
171
+ <total>
172
+ <balance>
173
+ <amount>
174
+ <commodity flags="PS">
175
+ <symbol>$</symbol>
176
+ </commodity>
177
+ <quantity>-9710.45</quantity>
178
+ </amount>
179
+ </balance>
180
+ </total>
181
+ </posting>
182
+ </postings>
183
+ </transaction>
184
+ <transaction>
185
+ <date>2020/05/01</date>
186
+ <payee>- 20-May-31</payee>
187
+ <postings>
188
+ <posting generated="true">
189
+ <account ref="0000564d3f101b50">
190
+ <name>Personal:Liabilities:AmericanExpress</name>
191
+ </account>
192
+ <post-amount>
193
+ <amount>
194
+ <commodity flags="PS">
195
+ <symbol>$</symbol>
196
+ </commodity>
197
+ <quantity>912.36</quantity>
198
+ </amount>
199
+ </post-amount>
200
+ <total>
201
+ <balance>
202
+ <amount>
203
+ <commodity flags="PS">
204
+ <symbol>$</symbol>
205
+ </commodity>
206
+ <quantity>-8798.09</quantity>
207
+ </amount>
208
+ </balance>
209
+ </total>
210
+ </posting>
211
+ </postings>
212
+ </transaction>
213
+ <transaction>
214
+ <date>2020/06/01</date>
215
+ <payee>- 20-Jun-30</payee>
216
+ <postings>
217
+ <posting generated="true">
218
+ <account ref="0000564d3f101b50">
219
+ <name>Personal:Liabilities:AmericanExpress</name>
220
+ </account>
221
+ <post-amount>
222
+ <amount>
223
+ <commodity flags="PS">
224
+ <symbol>$</symbol>
225
+ </commodity>
226
+ <quantity>322.98</quantity>
227
+ </amount>
228
+ </post-amount>
229
+ <total>
230
+ <balance>
231
+ <amount>
232
+ <commodity flags="PS">
233
+ <symbol>$</symbol>
234
+ </commodity>
235
+ <quantity>-8475.11</quantity>
236
+ </amount>
237
+ </balance>
238
+ </total>
239
+ </posting>
240
+ </postings>
241
+ </transaction>
242
+ <transaction>
243
+ <date>2020/07/01</date>
244
+ <payee>- 20-Jul-31</payee>
245
+ <postings>
246
+ <posting generated="true">
247
+ <account ref="0000564d3f101b50">
248
+ <name>Personal:Liabilities:AmericanExpress</name>
249
+ </account>
250
+ <post-amount>
251
+ <amount>
252
+ <commodity flags="PS">
253
+ <symbol>$</symbol>
254
+ </commodity>
255
+ <quantity>279.26</quantity>
256
+ </amount>
257
+ </post-amount>
258
+ <total>
259
+ <balance>
260
+ <amount>
261
+ <commodity flags="PS">
262
+ <symbol>$</symbol>
263
+ </commodity>
264
+ <quantity>-8195.85</quantity>
265
+ </amount>
266
+ </balance>
267
+ </total>
268
+ </posting>
269
+ </postings>
270
+ </transaction>
271
+ <transaction>
272
+ <date>2020/08/01</date>
273
+ <payee>- 20-Aug-31</payee>
274
+ <postings>
275
+ <posting generated="true">
276
+ <account ref="0000564d3f0fee20">
277
+ <name>&lt;None&gt;</name>
278
+ </account>
279
+ <post-amount>
280
+ <amount>
281
+ <quantity>0</quantity>
282
+ </amount>
283
+ </post-amount>
284
+ <total>
285
+ <balance>
286
+ <amount>
287
+ <commodity flags="PS">
288
+ <symbol>$</symbol>
289
+ </commodity>
290
+ <quantity>-8195.85</quantity>
291
+ </amount>
292
+ </balance>
293
+ </total>
294
+ </posting>
295
+ </postings>
296
+ </transaction>
297
+ <transaction>
298
+ <date>2020/09/01</date>
299
+ <payee>- 20-Sep-30</payee>
300
+ <postings>
301
+ <posting generated="true">
302
+ <account ref="0000564d3f101b50">
303
+ <name>Personal:Liabilities:AmericanExpress</name>
304
+ </account>
305
+ <post-amount>
306
+ <amount>
307
+ <commodity flags="PS">
308
+ <symbol>$</symbol>
309
+ </commodity>
310
+ <quantity>330.54</quantity>
311
+ </amount>
312
+ </post-amount>
313
+ <total>
314
+ <balance>
315
+ <amount>
316
+ <commodity flags="PS">
317
+ <symbol>$</symbol>
318
+ </commodity>
319
+ <quantity>-7865.31</quantity>
320
+ </amount>
321
+ </balance>
322
+ </total>
323
+ </posting>
324
+ </postings>
325
+ </transaction>
326
+ <transaction>
327
+ <date>2020/10/01</date>
328
+ <payee>- 20-Oct-31</payee>
329
+ <postings>
330
+ <posting generated="true">
331
+ <account ref="0000564d3f0fee20">
332
+ <name>&lt;None&gt;</name>
333
+ </account>
334
+ <post-amount>
335
+ <amount>
336
+ <quantity>0</quantity>
337
+ </amount>
338
+ </post-amount>
339
+ <total>
340
+ <balance>
341
+ <amount>
342
+ <commodity flags="PS">
343
+ <symbol>$</symbol>
344
+ </commodity>
345
+ <quantity>-7865.31</quantity>
346
+ </amount>
347
+ </balance>
348
+ </total>
349
+ </posting>
350
+ </postings>
351
+ </transaction>
352
+ <transaction>
353
+ <date>2020/11/01</date>
354
+ <payee>- 20-Nov-30</payee>
355
+ <postings>
356
+ <posting generated="true">
357
+ <account ref="0000564d3f101b50">
358
+ <name>Personal:Liabilities:AmericanExpress</name>
359
+ </account>
360
+ <post-amount>
361
+ <amount>
362
+ <commodity flags="PS">
363
+ <symbol>$</symbol>
364
+ </commodity>
365
+ <quantity>262.42</quantity>
366
+ </amount>
367
+ </post-amount>
368
+ <total>
369
+ <balance>
370
+ <amount>
371
+ <commodity flags="PS">
372
+ <symbol>$</symbol>
373
+ </commodity>
374
+ <quantity>-7602.89</quantity>
375
+ </amount>
376
+ </balance>
377
+ </total>
378
+ </posting>
379
+ </postings>
380
+ </transaction>
381
+ </transactions>
382
+ </ledger>
383
+