hledger-forecast 0.2.1 → 0.4.0

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 (58) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +0 -2
  3. data/README.md +169 -71
  4. data/example.journal +40 -0
  5. data/example.yml +38 -36
  6. data/hledger-forecast.gemspec +6 -4
  7. data/lib/hledger_forecast/cli.rb +35 -93
  8. data/lib/hledger_forecast/generator.rb +242 -90
  9. data/lib/hledger_forecast/summarize.rb +4 -5
  10. data/lib/hledger_forecast/tracker.rb +37 -0
  11. data/lib/hledger_forecast/version.rb +1 -1
  12. data/lib/hledger_forecast.rb +2 -1
  13. data/spec/command_spec.rb +14 -4
  14. data/spec/computed_amounts_spec.rb +35 -0
  15. data/spec/custom_spec.rb +35 -42
  16. data/spec/half-yearly_spec.rb +22 -6
  17. data/spec/modifier_spec.rb +87 -0
  18. data/spec/monthly_end_date_spec.rb +47 -0
  19. data/spec/monthly_end_date_transaction_spec.rb +32 -0
  20. data/spec/monthly_spec.rb +35 -27
  21. data/spec/once_spec.rb +22 -7
  22. data/spec/quarterly_spec.rb +21 -7
  23. data/spec/stubs/{monthly/forecast_monthly.yml → forecast.yml} +7 -7
  24. data/spec/stubs/transactions_found.journal +24 -0
  25. data/spec/stubs/transactions_found_inverse.journal +24 -0
  26. data/spec/stubs/transactions_not_found.journal +16 -0
  27. data/spec/track_spec.rb +197 -0
  28. data/spec/yearly_spec.rb +21 -7
  29. metadata +48 -74
  30. data/spec/start_date_spec.rb +0 -12
  31. data/spec/stubs/custom/forecast_custom_days.yml +0 -14
  32. data/spec/stubs/custom/forecast_custom_months.yml +0 -14
  33. data/spec/stubs/custom/forecast_custom_weeks.yml +0 -14
  34. data/spec/stubs/custom/forecast_custom_weeks_twice.yml +0 -24
  35. data/spec/stubs/custom/output_custom_days.journal +0 -24
  36. data/spec/stubs/custom/output_custom_months.journal +0 -20
  37. data/spec/stubs/custom/output_custom_weeks.journal +0 -28
  38. data/spec/stubs/custom/output_custom_weeks_twice.journal +0 -44
  39. data/spec/stubs/half-yearly/forecast_half-yearly.yml +0 -10
  40. data/spec/stubs/half-yearly/output_half-yearly.journal +0 -20
  41. data/spec/stubs/modifiers/forecast_modifiers.yml +0 -13
  42. data/spec/stubs/modifiers/output_modifiers.journal +0 -44
  43. data/spec/stubs/monthly/forecast_monthly_enddate.yml +0 -14
  44. data/spec/stubs/monthly/forecast_monthly_enddate_top.yml +0 -14
  45. data/spec/stubs/monthly/forecast_monthly_modifier.yml +0 -11
  46. data/spec/stubs/monthly/output_monthly.journal +0 -44
  47. data/spec/stubs/monthly/output_monthly_enddate.journal +0 -48
  48. data/spec/stubs/monthly/output_monthly_enddate_top.journal +0 -40
  49. data/spec/stubs/monthly/output_monthly_modifier.journal +0 -20
  50. data/spec/stubs/once/forecast_once.yml +0 -10
  51. data/spec/stubs/once/output_once.journal +0 -12
  52. data/spec/stubs/quarterly/forecast_quarterly.yml +0 -10
  53. data/spec/stubs/quarterly/output_quarterly.journal +0 -20
  54. data/spec/stubs/start_date/forecast_startdate.yml +0 -26
  55. data/spec/stubs/start_date/output_startdate.journal +0 -56
  56. data/spec/stubs/transactions.journal +0 -8
  57. data/spec/stubs/yearly/forecast_yearly.yml +0 -10
  58. data/spec/stubs/yearly/output_yearly.journal +0 -16
@@ -0,0 +1,197 @@
1
+ require_relative '../lib/hledger_forecast'
2
+
3
+ current_month = Date.new(Date.today.year, Date.today.month, 1)
4
+ previous_month = current_month.prev_month
5
+ next_month = current_month.next_month
6
+
7
+ base_config = <<~YAML
8
+ once:
9
+ - account: "Assets:Bank"
10
+ from: "2023-03-05"
11
+ transactions:
12
+ - amount: 3000
13
+ category: "Expenses:Tax"
14
+ description: Tax owed
15
+ track: true
16
+ - amount: 100
17
+ category: "Expenses:Food"
18
+ description: Food expenses
19
+ - amount: -1500
20
+ category: "Income:Salary"
21
+ description: Salary
22
+ to: "2023-08-01"
23
+ track: true
24
+
25
+ settings:
26
+ currency: GBP
27
+ YAML
28
+
29
+ base_output = <<~JOURNAL
30
+ ~ 2023-03-05 * Food expenses
31
+ Expenses:Food £100.00 ; Food expenses
32
+ Assets:Bank
33
+
34
+ ~ #{next_month} * [TRACKED] Tax owed
35
+ Expenses:Tax £3,000.00; Tax owed
36
+ Assets:Bank
37
+
38
+ ~ #{next_month} * [TRACKED] Salary
39
+ Income:Salary £-1,500.00; Salary
40
+ Assets:Bank
41
+
42
+ JOURNAL
43
+
44
+ RSpec.describe 'Tracking transactions -' do
45
+ it 'Determines which transactions should be tracked' do
46
+ generated = HledgerForecast::Generator
47
+ generated.generate(base_config)
48
+ tracked = generated.tracked
49
+
50
+ expect(tracked[0]['transaction']).to eq(
51
+ { "amount" => "£3,000.00", "category" => "Expenses:Tax", "description" => "Tax owed",
52
+ "inverse_amount" => "£-3,000.00", "track" => true }
53
+ )
54
+ expect(tracked[0]['account']).to eq("Assets:Bank")
55
+
56
+ expect(tracked[1]['transaction']).to eq(
57
+ { "amount" => "£-1,500.00", "category" => "Income:Salary", "description" => "Salary", "to" => "2023-08-01",
58
+ "inverse_amount" => "£1,500.00", "track" => true }
59
+ )
60
+ expect(tracked[1]['account']).to eq("Assets:Bank")
61
+ end
62
+
63
+ it 'marks a transaction as NOT FOUND if it doesnt exist' do
64
+ generated = HledgerForecast::Generator
65
+ generated.tracked = {} # Clear tracked transactions
66
+ generated.generate(base_config)
67
+ transactions_to_track = generated.tracked
68
+
69
+ track = HledgerForecast::Tracker.track(transactions_to_track, 'spec/stubs/transactions_not_found.journal')
70
+
71
+ expect(track[0]['found']).to eq(false)
72
+ expect(track[1]['found']).to eq(false)
73
+ end
74
+
75
+ it 'marks a transaction as FOUND if it exists' do
76
+ generated = HledgerForecast::Generator
77
+ generated.tracked = {} # Clear tracked transactions
78
+ generated.generate(base_config)
79
+ transactions_to_track = generated.tracked
80
+
81
+ track = HledgerForecast::Tracker.track(transactions_to_track, 'spec/stubs/transactions_found.journal')
82
+
83
+ expect(track[0]['found']).to eq(true)
84
+ expect(track[1]['found']).to eq(true)
85
+ end
86
+
87
+ it 'marks a transaction as FOUND if it exists, even if the category/amount are inversed' do
88
+ generated = HledgerForecast::Generator
89
+ generated.tracked = {} # Clear tracked transactions
90
+ generated.generate(base_config)
91
+ transactions_to_track = generated.tracked
92
+
93
+ track = HledgerForecast::Tracker.track(transactions_to_track, 'spec/stubs/transactions_found_inverse.journal')
94
+
95
+ expect(track[0]['found']).to eq(true)
96
+ end
97
+
98
+ it 'writes a NON-FOUND entry into a journal' do
99
+ options = {}
100
+ options[:transaction_file] = 'spec/stubs/transactions_not_found.journal'
101
+
102
+ generated = HledgerForecast::Generator
103
+ generated.tracked = {} # Clear tracked transactions
104
+
105
+ generated_journal = generated.generate(base_config, options)
106
+
107
+ expected_output = base_output
108
+ expect(generated_journal).to eq(expected_output)
109
+ end
110
+
111
+ it 'writes a NON-FOUND entry for dates that are close to the current period' do
112
+ require 'tempfile'
113
+
114
+ forecast_config = <<~YAML
115
+ once:
116
+ - account: "Assets:Bank"
117
+ from: "#{previous_month}"
118
+ transactions:
119
+ - amount: 5000
120
+ category: "Expenses:House"
121
+ description: New kitchen
122
+ track: true
123
+
124
+ settings:
125
+ currency: GBP
126
+ YAML
127
+
128
+ journal = <<~JOURNAL
129
+ #{previous_month} * Opening balance
130
+ Assets:Bank £1,000.00
131
+ Equity:Opening balance
132
+
133
+ #{previous_month} * Mortgage payment
134
+ Expenses:Mortgage £1,500.00
135
+ Assets:Bank
136
+
137
+ #{current_month - 10} * Groceries
138
+ Expenses:Groceries £1,500.00
139
+ Assets:Bank
140
+
141
+ JOURNAL
142
+
143
+ temp_file = Tempfile.new('journal')
144
+ temp_file.write(journal)
145
+ temp_file.close
146
+
147
+ options = {}
148
+ options[:transaction_file] = temp_file.path
149
+
150
+ generated = HledgerForecast::Generator
151
+ generated.tracked = {} # Clear tracked transactions
152
+
153
+ generated_journal = generated.generate(forecast_config, options)
154
+
155
+ expected_output = <<~JOURNAL
156
+ ~ #{next_month} * [TRACKED] New kitchen
157
+ Expenses:House £5,000.00; New kitchen
158
+ Assets:Bank
159
+
160
+ JOURNAL
161
+
162
+ expect(generated_journal).to eq(expected_output)
163
+ end
164
+
165
+ it 'treats a future tracked transaction as a regular transaction' do
166
+ forecast_config = <<~YAML
167
+ monthly:
168
+ - account: "Assets:Bank"
169
+ from: "#{next_month}"
170
+ transactions:
171
+ - amount: 100
172
+ category: "Expenses:Food"
173
+ description: Food expenses
174
+ track: true
175
+
176
+ settings:
177
+ currency: GBP
178
+ YAML
179
+
180
+ options = {}
181
+ options[:transaction_file] = 'spec/stubs/transactions_not_found.journal'
182
+
183
+ generated = HledgerForecast::Generator
184
+ generated.tracked = {} # Clear tracked transactions
185
+
186
+ generated_journal = generated.generate(forecast_config, options)
187
+
188
+ output = <<~JOURNAL
189
+ ~ monthly from #{next_month} * Food expenses
190
+ Expenses:Food £100.00; Food expenses
191
+ Assets:Bank
192
+
193
+ JOURNAL
194
+
195
+ expect(generated_journal).to eq(output)
196
+ end
197
+ end
data/spec/yearly_spec.rb CHANGED
@@ -1,13 +1,27 @@
1
1
  require_relative '../lib/hledger_forecast'
2
2
 
3
- RSpec.describe 'generate' do
4
- it 'generates a forecast with correct YEARLY transactions' do
5
- transactions = File.read('spec/stubs/transactions.journal')
6
- forecast = File.read('spec/stubs/yearly/forecast_yearly.yml')
3
+ config = <<~YAML
4
+ settings:
5
+ currency: GBP
6
+
7
+ yearly:
8
+ - account: "Assets:Bank"
9
+ from: "2023-04-01"
10
+ transactions:
11
+ - description: Bonus
12
+ category: "Income:Bonus"
13
+ amount: -3,000.00
14
+ YAML
7
15
 
8
- generated_journal = HledgerForecast::Generator.generate(transactions, forecast, '2023-03-01', '2024-04-30')
16
+ output = <<~JOURNAL
17
+ ~ yearly from 2023-04-01 * Bonus
18
+ Income:Bonus £-3,000.00; Bonus
19
+ Assets:Bank
9
20
 
10
- expected_output = File.read('spec/stubs/yearly/output_yearly.journal')
11
- expect(generated_journal).to eq(expected_output)
21
+ JOURNAL
22
+
23
+ RSpec.describe 'generate' do
24
+ it 'generates a forecast with correct YEARLY transactions' do
25
+ expect(HledgerForecast::Generator.generate(config)).to eq(output)
12
26
  end
13
27
  end
metadata CHANGED
@@ -1,57 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hledger-forecast
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oli Morris
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-04-22 00:00:00.000000000 Z
11
+ date: 2023-05-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: highline
14
+ name: colorize
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 2.1.0
19
+ version: 0.8.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 2.1.0
26
+ version: 0.8.1
27
27
  - !ruby/object:Gem::Dependency
28
- name: money
28
+ name: dentaku
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 6.16.0
33
+ version: 3.5.1
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 6.16.0
40
+ version: 3.5.1
41
41
  - !ruby/object:Gem::Dependency
42
- name: colorize
42
+ name: highline
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.8.1
47
+ version: 2.1.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 0.8.1
54
+ version: 2.1.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: money
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 6.16.0
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 6.16.0
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: terminal-table
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -80,8 +94,8 @@ dependencies:
80
94
  - - "~>"
81
95
  - !ruby/object:Gem::Version
82
96
  version: '3.12'
83
- description: Uses a YAML file to generate monthly, quarterly, yearly and one-off transactions
84
- for better forecasting in Hledger
97
+ description: Uses a YAML file to generate forecasts which can be used to extend the
98
+ default functionality in hledger
85
99
  email: olimorris@users.noreply.github.com
86
100
  executables:
87
101
  - hledger-forecast
@@ -95,49 +109,30 @@ files:
95
109
  - LICENSE
96
110
  - README.md
97
111
  - bin/hledger-forecast
112
+ - example.journal
98
113
  - example.yml
99
114
  - hledger-forecast.gemspec
100
115
  - lib/hledger_forecast.rb
101
116
  - lib/hledger_forecast/cli.rb
102
117
  - lib/hledger_forecast/generator.rb
103
118
  - lib/hledger_forecast/summarize.rb
119
+ - lib/hledger_forecast/tracker.rb
104
120
  - lib/hledger_forecast/version.rb
105
121
  - spec/command_spec.rb
122
+ - spec/computed_amounts_spec.rb
106
123
  - spec/custom_spec.rb
107
124
  - spec/half-yearly_spec.rb
125
+ - spec/modifier_spec.rb
126
+ - spec/monthly_end_date_spec.rb
127
+ - spec/monthly_end_date_transaction_spec.rb
108
128
  - spec/monthly_spec.rb
109
129
  - spec/once_spec.rb
110
130
  - spec/quarterly_spec.rb
111
- - spec/start_date_spec.rb
112
- - spec/stubs/custom/forecast_custom_days.yml
113
- - spec/stubs/custom/forecast_custom_months.yml
114
- - spec/stubs/custom/forecast_custom_weeks.yml
115
- - spec/stubs/custom/forecast_custom_weeks_twice.yml
116
- - spec/stubs/custom/output_custom_days.journal
117
- - spec/stubs/custom/output_custom_months.journal
118
- - spec/stubs/custom/output_custom_weeks.journal
119
- - spec/stubs/custom/output_custom_weeks_twice.journal
120
- - spec/stubs/half-yearly/forecast_half-yearly.yml
121
- - spec/stubs/half-yearly/output_half-yearly.journal
122
- - spec/stubs/modifiers/forecast_modifiers.yml
123
- - spec/stubs/modifiers/output_modifiers.journal
124
- - spec/stubs/monthly/forecast_monthly.yml
125
- - spec/stubs/monthly/forecast_monthly_enddate.yml
126
- - spec/stubs/monthly/forecast_monthly_enddate_top.yml
127
- - spec/stubs/monthly/forecast_monthly_modifier.yml
128
- - spec/stubs/monthly/output_monthly.journal
129
- - spec/stubs/monthly/output_monthly_enddate.journal
130
- - spec/stubs/monthly/output_monthly_enddate_top.journal
131
- - spec/stubs/monthly/output_monthly_modifier.journal
132
- - spec/stubs/once/forecast_once.yml
133
- - spec/stubs/once/output_once.journal
134
- - spec/stubs/quarterly/forecast_quarterly.yml
135
- - spec/stubs/quarterly/output_quarterly.journal
136
- - spec/stubs/start_date/forecast_startdate.yml
137
- - spec/stubs/start_date/output_startdate.journal
138
- - spec/stubs/transactions.journal
139
- - spec/stubs/yearly/forecast_yearly.yml
140
- - spec/stubs/yearly/output_yearly.journal
131
+ - spec/stubs/forecast.yml
132
+ - spec/stubs/transactions_found.journal
133
+ - spec/stubs/transactions_found_inverse.journal
134
+ - spec/stubs/transactions_not_found.journal
135
+ - spec/track_spec.rb
141
136
  - spec/yearly_spec.rb
142
137
  homepage: https://github.com/olimorris/hledger-forecast
143
138
  licenses:
@@ -161,42 +156,21 @@ requirements: []
161
156
  rubygems_version: 3.4.12
162
157
  signing_key:
163
158
  specification_version: 4
164
- summary: Utility to generate forecasts in Hledger
159
+ summary: An extended wrapper around hledger's forecasting functionality
165
160
  test_files:
166
161
  - spec/command_spec.rb
162
+ - spec/computed_amounts_spec.rb
167
163
  - spec/custom_spec.rb
168
164
  - spec/half-yearly_spec.rb
165
+ - spec/modifier_spec.rb
166
+ - spec/monthly_end_date_spec.rb
167
+ - spec/monthly_end_date_transaction_spec.rb
169
168
  - spec/monthly_spec.rb
170
169
  - spec/once_spec.rb
171
170
  - spec/quarterly_spec.rb
172
- - spec/start_date_spec.rb
173
- - spec/stubs/custom/forecast_custom_days.yml
174
- - spec/stubs/custom/forecast_custom_months.yml
175
- - spec/stubs/custom/forecast_custom_weeks.yml
176
- - spec/stubs/custom/forecast_custom_weeks_twice.yml
177
- - spec/stubs/custom/output_custom_days.journal
178
- - spec/stubs/custom/output_custom_months.journal
179
- - spec/stubs/custom/output_custom_weeks.journal
180
- - spec/stubs/custom/output_custom_weeks_twice.journal
181
- - spec/stubs/half-yearly/forecast_half-yearly.yml
182
- - spec/stubs/half-yearly/output_half-yearly.journal
183
- - spec/stubs/modifiers/forecast_modifiers.yml
184
- - spec/stubs/modifiers/output_modifiers.journal
185
- - spec/stubs/monthly/forecast_monthly.yml
186
- - spec/stubs/monthly/forecast_monthly_enddate.yml
187
- - spec/stubs/monthly/forecast_monthly_enddate_top.yml
188
- - spec/stubs/monthly/forecast_monthly_modifier.yml
189
- - spec/stubs/monthly/output_monthly.journal
190
- - spec/stubs/monthly/output_monthly_enddate.journal
191
- - spec/stubs/monthly/output_monthly_enddate_top.journal
192
- - spec/stubs/monthly/output_monthly_modifier.journal
193
- - spec/stubs/once/forecast_once.yml
194
- - spec/stubs/once/output_once.journal
195
- - spec/stubs/quarterly/forecast_quarterly.yml
196
- - spec/stubs/quarterly/output_quarterly.journal
197
- - spec/stubs/start_date/forecast_startdate.yml
198
- - spec/stubs/start_date/output_startdate.journal
199
- - spec/stubs/transactions.journal
200
- - spec/stubs/yearly/forecast_yearly.yml
201
- - spec/stubs/yearly/output_yearly.journal
171
+ - spec/stubs/forecast.yml
172
+ - spec/stubs/transactions_found.journal
173
+ - spec/stubs/transactions_found_inverse.journal
174
+ - spec/stubs/transactions_not_found.journal
175
+ - spec/track_spec.rb
202
176
  - spec/yearly_spec.rb
@@ -1,12 +0,0 @@
1
- require_relative '../lib/hledger_forecast'
2
- RSpec.describe 'generate' do
3
- it 'generates a forecast with correct MONTHLY transactions that have a START DATE' do
4
- transactions = File.read('spec/stubs/transactions.journal')
5
- forecast = File.read('spec/stubs/start_date/forecast_startdate.yml')
6
-
7
- generated_journal = HledgerForecast::Generator.generate(transactions, forecast, '2023-03-01', '2023-08-30')
8
-
9
- expected_output = File.read('spec/stubs/start_date/output_startdate.journal')
10
- expect(generated_journal).to eq(expected_output)
11
- end
12
- end
@@ -1,14 +0,0 @@
1
- custom:
2
- - description: Repeat every 3 days
3
- recurrence:
4
- period: days
5
- quantity: 3
6
- account: "[Assets:Bank]"
7
- start: "2023-03-01"
8
- transactions:
9
- - amount: 80
10
- category: "[Expenses:Personal Care]"
11
- description: Hair and beauty
12
-
13
- settings:
14
- currency: GBP
@@ -1,14 +0,0 @@
1
- custom:
2
- - description: Repeat every 5 months
3
- recurrence:
4
- period: months
5
- quantity: 5
6
- account: "[Assets:Bank]"
7
- start: "2023-03-01"
8
- transactions:
9
- - amount: 100
10
- category: "[Expenses:Personal Care]"
11
- description: Hair and beauty
12
-
13
- settings:
14
- currency: GBP
@@ -1,14 +0,0 @@
1
- custom:
2
- - description: Repeat every 2 weeks
3
- recurrence:
4
- period: weeks
5
- quantity: 2
6
- account: "[Assets:Bank]"
7
- start: "2023-03-01"
8
- transactions:
9
- - amount: 75
10
- category: "[Expenses:Personal Care]"
11
- description: Hair and beauty
12
-
13
- settings:
14
- currency: GBP
@@ -1,24 +0,0 @@
1
- custom:
2
- - description: Beauty expenses every 2 weeks
3
- recurrence:
4
- period: weeks
5
- quantity: 2
6
- account: "[Assets:Bank]"
7
- start: "2023-03-01"
8
- transactions:
9
- - amount: 75
10
- category: "[Expenses:Personal Care]"
11
- description: Hair and beauty
12
- - description: Car fuel every 5 days
13
- recurrence:
14
- period: days
15
- quantity: 5
16
- account: "[Assets:Bank]"
17
- start: "2023-03-01"
18
- transactions:
19
- - amount: 150
20
- category: "[Expenses:Car:Fuel]"
21
- description: Car Fuel
22
-
23
- settings:
24
- currency: GBP
@@ -1,24 +0,0 @@
1
- 2023-02-01 * Opening balance
2
- Assets:Bank £1,000.00
3
- Equity:Opening balance
4
-
5
- 2023-02-05 * Mortgage payment
6
- Expenses:Mortgage £1,500.00
7
- Assets:Bank
8
-
9
- 2023-03-01 * Hair and beauty
10
- [Expenses:Personal Care] £80.00
11
- [Assets:Bank]
12
-
13
- 2023-03-04 * Hair and beauty
14
- [Expenses:Personal Care] £80.00
15
- [Assets:Bank]
16
-
17
- 2023-03-07 * Hair and beauty
18
- [Expenses:Personal Care] £80.00
19
- [Assets:Bank]
20
-
21
- 2023-03-10 * Hair and beauty
22
- [Expenses:Personal Care] £80.00
23
- [Assets:Bank]
24
-
@@ -1,20 +0,0 @@
1
- 2023-02-01 * Opening balance
2
- Assets:Bank £1,000.00
3
- Equity:Opening balance
4
-
5
- 2023-02-05 * Mortgage payment
6
- Expenses:Mortgage £1,500.00
7
- Assets:Bank
8
-
9
- 2023-03-01 * Hair and beauty
10
- [Expenses:Personal Care] £100.00
11
- [Assets:Bank]
12
-
13
- 2023-08-01 * Hair and beauty
14
- [Expenses:Personal Care] £100.00
15
- [Assets:Bank]
16
-
17
- 2024-01-01 * Hair and beauty
18
- [Expenses:Personal Care] £100.00
19
- [Assets:Bank]
20
-
@@ -1,28 +0,0 @@
1
- 2023-02-01 * Opening balance
2
- Assets:Bank £1,000.00
3
- Equity:Opening balance
4
-
5
- 2023-02-05 * Mortgage payment
6
- Expenses:Mortgage £1,500.00
7
- Assets:Bank
8
-
9
- 2023-03-01 * Hair and beauty
10
- [Expenses:Personal Care] £75.00
11
- [Assets:Bank]
12
-
13
- 2023-03-15 * Hair and beauty
14
- [Expenses:Personal Care] £75.00
15
- [Assets:Bank]
16
-
17
- 2023-03-29 * Hair and beauty
18
- [Expenses:Personal Care] £75.00
19
- [Assets:Bank]
20
-
21
- 2023-04-12 * Hair and beauty
22
- [Expenses:Personal Care] £75.00
23
- [Assets:Bank]
24
-
25
- 2023-04-26 * Hair and beauty
26
- [Expenses:Personal Care] £75.00
27
- [Assets:Bank]
28
-
@@ -1,44 +0,0 @@
1
- 2023-02-01 * Opening balance
2
- Assets:Bank £1,000.00
3
- Equity:Opening balance
4
-
5
- 2023-02-05 * Mortgage payment
6
- Expenses:Mortgage £1,500.00
7
- Assets:Bank
8
-
9
- 2023-03-01 * Hair and beauty
10
- [Expenses:Personal Care] £75.00
11
- [Assets:Bank]
12
-
13
- 2023-03-01 * Car Fuel
14
- [Expenses:Car:Fuel] £150.00
15
- [Assets:Bank]
16
-
17
- 2023-03-06 * Car Fuel
18
- [Expenses:Car:Fuel] £150.00
19
- [Assets:Bank]
20
-
21
- 2023-03-11 * Car Fuel
22
- [Expenses:Car:Fuel] £150.00
23
- [Assets:Bank]
24
-
25
- 2023-03-15 * Hair and beauty
26
- [Expenses:Personal Care] £75.00
27
- [Assets:Bank]
28
-
29
- 2023-03-16 * Car Fuel
30
- [Expenses:Car:Fuel] £150.00
31
- [Assets:Bank]
32
-
33
- 2023-03-21 * Car Fuel
34
- [Expenses:Car:Fuel] £150.00
35
- [Assets:Bank]
36
-
37
- 2023-03-26 * Car Fuel
38
- [Expenses:Car:Fuel] £150.00
39
- [Assets:Bank]
40
-
41
- 2023-03-29 * Hair and beauty
42
- [Expenses:Personal Care] £75.00
43
- [Assets:Bank]
44
-
@@ -1,10 +0,0 @@
1
- settings:
2
- currency: GBP
3
-
4
- half-yearly:
5
- - start: "2023-04-01"
6
- account: "[Assets:Bank]"
7
- transactions:
8
- - description: Holiday
9
- category: "[Expenses:Holiday]"
10
- amount: 500
@@ -1,20 +0,0 @@
1
- 2023-02-01 * Opening balance
2
- Assets:Bank £1,000.00
3
- Equity:Opening balance
4
-
5
- 2023-02-05 * Mortgage payment
6
- Expenses:Mortgage £1,500.00
7
- Assets:Bank
8
-
9
- 2023-04-01 * Holiday
10
- [Expenses:Holiday] £500.00
11
- [Assets:Bank]
12
-
13
- 2023-10-01 * Holiday
14
- [Expenses:Holiday] £500.00
15
- [Assets:Bank]
16
-
17
- 2024-04-01 * Holiday
18
- [Expenses:Holiday] £500.00
19
- [Assets:Bank]
20
-