treasurer 0.10.2 → 0.10.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 249db1dc1774f493ec37945307fa75c56d47977e4e1f6ae6f420b72209bd3736
4
- data.tar.gz: eb97e9cb0eb1b45ec0465fa25344a12c7d4c37f368e699d4527139da6031a3bb
3
+ metadata.gz: 530bccfe411d881237a70e7108ebc999b11401e6961a439b55c5efa8886be585
4
+ data.tar.gz: e4039efc362d99ba686675a04b7a3fe33e01498f8b3129840f588e2fada30790
5
5
  SHA512:
6
- metadata.gz: 3a061e81250674481ef0544e4d5a8906e6dcfd6bc40c37210366220e02fc33d1bac19792bab8c046022a354a1326b9b62299982e8d9bc02d7d9df37556dbb131
7
- data.tar.gz: 3339deaaf6171c6fb1e71faf3ac51b162f6cea9045685b58e485acbab2d9f9e8e345ada4f6a1506d3166aaac2982b9d8fe4a17e21d05569d8da3258c772ea018
6
+ metadata.gz: f16b0b2b1be1402f91d5b37bd764f9bd9c8763f3e99933d87bf7baa4decd989abdec961c9abc2c74072ce38fd8b9803ac1c9c0bb4aacfb2b4a93e5c0e33a2acb
7
+ data.tar.gz: 5a05d1f79c0138cb8f4f289bd8647c0a8c1deb8fa8a56e1c84c6adc0f8752e15daaace29d74fa65192726242ccf32c4f8fdeac64c89a717615439177ee60c372
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.10.2
1
+ 0.10.3
@@ -161,33 +161,41 @@ class CodeRunner::Budget
161
161
  chosen = false
162
162
  transactions = runner.component_run_list.values.sort_by{|r| r.date}
163
163
  idx = transactions.index(self)
164
+ ff = Proc.new{|float| float ? sprintf("%8.2f", float) : " "*8}
165
+ format = Proc.new{|runs| runs.map{|r|
166
+ #begin
167
+ sprintf("%70s %s %8s %8s %8s %-12s", r.description[0,70], r.date.to_s, ff.call(r.deposit), ff.call(r.withdrawal), ff.call(r.balance), r.account)
168
+ #rescue
169
+ #p r
170
+ #p r.data_line
171
+ #exit
172
+ #end
173
+ }.join("\n")}
174
+ format_choices = Proc.new{|chs| chs.map{|k,v| Terminal::LIGHT_GREEN + k + ":" + Terminal.default_colour + v}.join(" ")}
164
175
  Dir.chdir(@runner.root_folder) do
165
176
  sym = nil
177
+ print_transactions = Proc.new do
178
+ puts format.call(transactions.slice([idx-30, 0].max, 30))
179
+ puts Terminal::LIGHT_GREEN + format.call([transactions[idx]]) + "<-----" + Terminal.default_colour
180
+ sz = transactions.size
181
+ puts format.call(transactions.slice([idx+1, sz-1].min, 10))
182
+ end
166
183
  while not chosen
167
184
  Hash.phoenix('external_accounts.rb') do |account_hash|
168
185
  #account_hash.each{|k,v| v[:name] = v[:name].to_sym} #Fixes an earlier bug
169
186
  #choices = account_arr.size.times.map{|i| [i,account_arr[i][:name]]}
170
187
  choices = account_hash.map{|k,v| [v[:sym], k]}.to_h
188
+ choices["-"] = "Transfer"
171
189
  puts Terminal.default_colour
172
- puts
173
- puts "-" * data_line.size
190
+ print_transactions.call
174
191
  #format = Proc.new{|runs| runs.map{|r| r.signature.map{|d| d.to_s}.join(",")}.join("\n")}
175
- format = Proc.new{|runs| runs.map{|r|
176
- sprintf("%-40s %5.2f %5.2f %5.2f %12s", r.description, r.deposit, r.withdrawal, r.balance, r.account)
177
- }.join("\n")}
178
- puts format.call(transactions.slice([idx-10, 0].max, idx-1))
179
- puts Terminal::LIGHT_GREEN + format.call([transactions[idx]]) + "<-----" + Terminal.default_colour
180
- sz = transactions.size
181
- puts format.call(transactions.slice([idx+1, sz].min, [idx+10,sz].min))
182
- puts "-" * data_line.size
183
- puts
184
- puts "Account: " + account
185
192
  puts
186
- puts choices.map{|k,v| Terminal::LIGHT_GREEN + k + ":" + Terminal.default_colour + v}.join(" ")
193
+ puts format_choices.call(choices)
187
194
  puts
188
- puts "Please choose from the above external accounts for this transaction."
189
- puts "If you wish to add a new account type 0. To quit type q"
190
- puts "To start again for this transaction, type z"
195
+ puts "Please choose from the above external accounts for this transaction." +
196
+ "If you wish to add a new account type 0. To quit type q. " +
197
+ "To start again for this transaction, type z. To mark it as transfer between" +
198
+ "two non-external accounts, press -."
191
199
  while not chosen
192
200
  require 'io/console'
193
201
  choice = STDIN.getch
@@ -211,6 +219,10 @@ class CodeRunner::Budget
211
219
  elsif choice == "z"
212
220
  chosen = false
213
221
  break
222
+ elsif choice == "-"
223
+ ext_account = "Transfer"
224
+ chosen = "Transfer"
225
+ break
214
226
  elsif not choices.keys.include? choice
215
227
  puts "Error: this symbol does not correspond to an account"
216
228
  else
@@ -221,6 +233,9 @@ class CodeRunner::Budget
221
233
  #choices_hash[data_line] = {external_account: chosen}
222
234
  #end
223
235
  end
236
+ if ext_account and chosen
237
+ break
238
+ end
224
239
  ext_account = chosen
225
240
  next if not chosen
226
241
  chosen = false
@@ -229,13 +244,14 @@ class CodeRunner::Budget
229
244
  sub_accounts = account_hash[ext_account][:sub_accounts]
230
245
  sub_accounts.each{|k,v| v[:name] = v[:name].to_sym} #Fixes an earlier bug
231
246
  choices = sub_accounts.map{|k,v| [v[:sym], k]}.to_h
232
- puts "-" * data_line.size
247
+ #puts "-" * data_line.size
248
+ print_transactions.call
233
249
  puts
234
- puts choices.inspect
250
+ puts format_choices.call(choices)
235
251
  puts
236
- puts "Please choose from the above sub-accounts for this transaction."
237
- puts "If you wish to add a new sub account, type 0. To quit, type q"
238
- puts "To start again for this transaction, type z"
252
+ puts "Please choose from the above sub-accounts for this transaction. " +
253
+ "If you wish to add a new sub account, type 0. To quit, type q. " +
254
+ "To start again for this transaction, type z"
239
255
  while not chosen
240
256
  require 'io/console'
241
257
  choice = STDIN.getch
@@ -270,9 +286,8 @@ class CodeRunner::Budget
270
286
  #Hash.phoenix('account_choices.rb') do |choices_hash|
271
287
  #choices_hash[signature] = {external_account: ext_account, sub_account: chosen}
272
288
  #end
273
- add_sqlite_choices({external_account: ext_account, sub_account: chosen})
274
289
  end #while not chosen
275
-
290
+ add_sqlite_choices({external_account: ext_account, sub_account: chosen})
276
291
  end
277
292
  {external_account: ext_account, sub_account: chosen}
278
293
  end
@@ -32,7 +32,12 @@ class << self
32
32
  def assign(copts={})
33
33
  load_treasurer_folder(copts)
34
34
  crcopts = eval(copts[:C]||"{}")
35
+ #crcopts[:h] = nil
36
+ #CodeRunner.run_command('generate_component_runs', crcopts)
35
37
  crcopts[:h] = :component
38
+ crcopts[:O] = 'date'
39
+ crcopts[:f] = 'not (component_runs and component_runs.size > 0 and component_runs[0].instance_variable_get(:@external_account))'
40
+ crcopts[:f] = 'not (@external_account and @sub_account)'
36
41
  CodeRunner.run_command('external_account', crcopts)
37
42
  end
38
43
  def status(copts={})
@@ -124,9 +124,12 @@ class Treasurer
124
124
  #p 'accounts256',@runs.size, @runs.map{|r| r.account}.uniq
125
125
 
126
126
  end
127
+ # Construct the list of accounts. Because of double entry accounting
128
+ # # every entry has two accounts. External accounts are abstract accounts
129
+ # that do not correspond to a real account: e.g. "Food Expenditure"
127
130
  def generate_accounts
128
131
  accounts = @runs.map{|r| r.account}.uniq.map{|acc| Account.new(acc, self, @runner, @runs, false)}
129
- external_accounts = (@runs.map{|r| r.external_account}.uniq - accounts.map{|acc| acc.name}).map{|acc| Account.new(acc, self, @runner, @runs, true)}
132
+ external_accounts = (@runs.map{|r| r.external_account}.uniq - accounts.map{|acc| acc.name} - ["Transfer"]).map{|acc| Account.new(acc, self, @runner, @runs, true)}
130
133
  #if not @report_currency
131
134
  external_accounts = external_accounts.map do |acc|
132
135
  if acc_inf = ACCOUNT_INFO[acc.name] and currencies = acc_inf[:currencies] and currencies.size > 1
data/treasurer.gemspec CHANGED
@@ -2,11 +2,11 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: treasurer 0.10.2 ruby lib
5
+ # stub: treasurer 0.10.3 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "treasurer".freeze
9
- s.version = "0.10.2"
9
+ s.version = "0.10.3"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib".freeze]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: treasurer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.2
4
+ version: 0.10.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Edmund Highcock