treasurer 0.10.2 → 0.10.3

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