gtmtech-crypto 0.0.5 → 0.0.6

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
  SHA1:
3
- metadata.gz: 429fd644cb667332368b71961b8ad407e338ccc2
4
- data.tar.gz: 9572c1433ab83610b79be0d4cd51f12401b13511
3
+ metadata.gz: 78ed8270eb639f0c6bd3f0e8e9eb246be3d6d5ca
4
+ data.tar.gz: 577a3a6572ff24224185a41051f19e5f7bb334fb
5
5
  SHA512:
6
- metadata.gz: f833cf69d20e41df9322915aeceb647b9d30c19d40a15c46edbe97788d3056c5c9d5eea658fbb1455d1ea756c4efe1a2ed1727868be0c1463337acfd11c1e447
7
- data.tar.gz: 4b23b8a96676a1a8fed2e9785a59de74ebf611d1d465ac69e58720f089505e43ca82271406e6f498fe2dc3d6c10ccae061b03f1248e50c66094e747c3c23e810
6
+ metadata.gz: 5aae2d5056eb65275f79d34389d8ae5020e816ce1fbdd131b78853ae1895692a495f984681a0c95fa1ee75d05118ccfbb615de9a2d066bdbb2d987287d8b2ebd
7
+ data.tar.gz: 37640e9619beebfcdceae491a6e0da454466ed671d5e3aab3cc4d1c69dbf8696b0596f57ade724a518f4e1adbf50fde4706f0d80ccbf177156d36ce0dc639729
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |gem|
6
6
  gem.name = "gtmtech-crypto"
7
- gem.version = "0.0.5"
7
+ gem.version = "0.0.6"
8
8
  gem.description = "Simple tool for accounting of cryptocurrencies"
9
9
  gem.summary = "Simple tool for accounting of cryptocurrencies"
10
10
  gem.author = "Geoff Meakin"
@@ -83,6 +83,38 @@ module Gtmtech
83
83
  @@document[ "transactions" ].delete( id )
84
84
  end
85
85
 
86
+ def self.reconcile_transactions
87
+ self.list_transactions
88
+ puts ""
89
+ printf("%-20s %-10s %-20s\n", "account", "currency", "amount")
90
+ puts "-" * 120
91
+ fees = {}
92
+ @@document[ "accounts" ].each do | name, account_info |
93
+ account_info[ "currencies" ].sort.each do | currency |
94
+ decimal = "0.0"
95
+ @@document[ "transactions" ].each do |id, txn|
96
+ if txn[ "fees_account" ] == name and txn[ "fees_currency" ] == currency
97
+ decimal = Utils.decimal_minus( decimal, txn[ "fees_amount" ] )
98
+ unless fees.key? currency
99
+ fees[ currency ] = "0.0"
100
+ end
101
+ fees[ currency ] = Utils.decimal_add( fees[currency], txn[ "fees_amount" ])
102
+ end
103
+ if txn[ "source_account" ] == name and txn[ "source_currency" ] == currency
104
+ decimal = Utils.decimal_minus( decimal, txn[ "source_amount" ] )
105
+ end
106
+ if txn[ "dest_account" ] == name and txn[ "dest_currency" ] == currency
107
+ decimal = Utils.decimal_add( decimal, txn[ "dest_amount" ] )
108
+ end
109
+ end
110
+ printf( "%-20s %-10s %-20s\n", name, currency, decimal )
111
+ end
112
+ end
113
+ fees.keys.sort.each do |currency|
114
+ printf( "%-20s %-10s %-20s\n", "**FEES**", currency, fees[ currency ] )
115
+ end
116
+ end
117
+
86
118
  def self.save
87
119
  File.open(@@path, 'w') do |file|
88
120
  file.write( @@document.to_yaml )
@@ -20,6 +20,9 @@ crypto #{self.prettyname} new --date=<s> --from=<s> --to=<s> [--fees=<s>]
20
20
  crypto #{self.prettyname} delete --id=<s>
21
21
  - delete a transaction
22
22
 
23
+ crypto #{self.prettyname} reconcile
24
+ - reconcile all transactions
25
+
23
26
  crypto #{self.prettyname} list
24
27
  - list all transactions
25
28
 
@@ -106,6 +109,11 @@ EOS
106
109
  Data.save
107
110
  end
108
111
 
112
+ def self.reconcile
113
+ Data.load
114
+ Data.reconcile_transactions
115
+ end
116
+
109
117
  def self.execute
110
118
  verb = ARGV.shift
111
119
  case verb.downcase
@@ -115,6 +123,8 @@ EOS
115
123
  self.list
116
124
  when "delete"
117
125
  self.delete
126
+ when "reconcile"
127
+ self.reconcile
118
128
  else
119
129
  self.error "transaction takes an action [new, list, delete] . See --help for more info"
120
130
  end
@@ -1,4 +1,5 @@
1
1
  require 'fileutils'
2
+ require 'bigdecimal'
2
3
 
3
4
  module Gtmtech
4
5
  module Crypto
@@ -58,6 +59,14 @@ module Gtmtech
58
59
  end
59
60
  end
60
61
 
62
+ def self.decimal_add decimal1, decimal2
63
+ ( BigDecimal( decimal1 ) + BigDecimal( decimal2 ) ).to_s("F")
64
+ end
65
+
66
+ def self.decimal_minus decimal1, decimal2
67
+ ( BigDecimal( decimal1 ) - BigDecimal( decimal2 ) ).to_s("F")
68
+ end
69
+
61
70
  end
62
71
  end
63
72
  end
@@ -1,7 +1,7 @@
1
1
  module Gtmtech
2
2
  module Crypto
3
3
 
4
- VERSION = "0.0.5"
4
+ VERSION = "0.0.6"
5
5
  DESCRIPTION = "crypto is a cli tool for simple accounting of cryptocurrencies"
6
6
 
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gtmtech-crypto
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Geoff Meakin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-06-24 00:00:00.000000000 Z
11
+ date: 2017-06-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: trollop