gtmtech-crypto 0.1.0 → 0.1.1
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 +4 -4
- data/gtmtech-crypto.gemspec +2 -1
- data/lib/gtmtech/crypto/data.rb +126 -26
- data/lib/gtmtech/crypto/subcommands/txn.rb +13 -3
- data/lib/gtmtech/crypto/utils.rb +7 -4
- data/lib/gtmtech/crypto.rb +1 -1
- metadata +15 -1
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 666f62b7fcb98a96d19bfdd61f882db3af5c53f4
         | 
| 4 | 
            +
              data.tar.gz: bf86844efd07b576b48b66d3d27de5c8491b4917
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 1d36a2cac0f0d375c6d1c743058d756f3f86519867a4c5ac92be9591b13b9b49897410b301eba4ccb2cd030f933c879fbc9359081dad016a2e4c69ef1dfd2bac
         | 
| 7 | 
            +
              data.tar.gz: 6082adda14f0351d4610a34540fbedcd1ec849b4e979922016bc0a656d5b2b66f5f81938e2fb13d3275adf0488c5604a40f592a963314ae1a0047dad8fe1770d
         | 
    
        data/gtmtech-crypto.gemspec
    CHANGED
    
    | @@ -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.1. | 
| 7 | 
            +
              gem.version       = "0.1.1"
         | 
| 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"
         | 
| @@ -16,4 +16,5 @@ Gem::Specification.new do |gem| | |
| 16 16 | 
             
              gem.test_files    = gem.files.grep(%r{^(test|spec|features)/})
         | 
| 17 17 | 
             
              gem.require_paths = ["lib"]
         | 
| 18 18 | 
             
              gem.add_dependency('trollop', '~> 2.0')
         | 
| 19 | 
            +
              gem.add_dependency('colorize', '~> 0.8.1')
         | 
| 19 20 | 
             
            end
         | 
    
        data/lib/gtmtech/crypto/data.rb
    CHANGED
    
    | @@ -1,5 +1,6 @@ | |
| 1 1 | 
             
            require 'securerandom'
         | 
| 2 2 | 
             
            require 'gtmtech/crypto/utils'
         | 
| 3 | 
            +
            require 'colorize'
         | 
| 3 4 |  | 
| 4 5 | 
             
            module Gtmtech
         | 
| 5 6 | 
             
              module Crypto
         | 
| @@ -46,7 +47,7 @@ module Gtmtech | |
| 46 47 | 
             
                    true
         | 
| 47 48 | 
             
                  end
         | 
| 48 49 |  | 
| 49 | 
            -
                  def self.add_transaction date, source_account, source_currency, source_amount, dest_account, dest_currency, dest_amount, fees_account, fees_currency, fees_amount
         | 
| 50 | 
            +
                  def self.add_transaction date, source_account, source_currency, source_amount, dest_account, dest_currency, dest_amount, fees_account, fees_currency, fees_amount, references, percentage
         | 
| 50 51 | 
             
                    if date.downcase == "now"
         | 
| 51 52 | 
             
                      date = Time.now.to_s.split(" ").take(2).join(",")
         | 
| 52 53 | 
             
                    end
         | 
| @@ -64,24 +65,110 @@ module Gtmtech | |
| 64 65 | 
             
                                                           "dest_amount"     => dest_amount,
         | 
| 65 66 | 
             
                                                           "fees_account"    => fees_account,
         | 
| 66 67 | 
             
                                                           "fees_currency"   => fees_currency,
         | 
| 67 | 
            -
                                                           "fees_amount"     => fees_amount | 
| 68 | 
            +
                                                           "fees_amount"     => fees_amount,
         | 
| 69 | 
            +
                                                           "references"      => references,
         | 
| 70 | 
            +
                                                           "percentage"      => percentage }
         | 
| 68 71 | 
             
                  end
         | 
| 69 72 |  | 
| 70 73 | 
             
                  def self.list_transactions
         | 
| 71 | 
            -
                     | 
| 72 | 
            -
             | 
| 73 | 
            -
                    puts " | 
| 74 | 
            +
                    outputs = []
         | 
| 75 | 
            +
             | 
| 76 | 
            +
                    puts "Transactions for profile \"#{ENV['CRYPTO_PROFILE'] || 'main'}\":\n".red
         | 
| 77 | 
            +
                    cols = "%-36s %-20s %-14s %-15s %-15s %-15s %-12s %-14s %s"
         | 
| 78 | 
            +
                    puts sprintf("#{cols}", 
         | 
| 79 | 
            +
                                  "id", 
         | 
| 80 | 
            +
                                  "date", 
         | 
| 81 | 
            +
                                  "%age", 
         | 
| 82 | 
            +
                                  "src account", 
         | 
| 83 | 
            +
                                  "src amount", 
         | 
| 84 | 
            +
                                  "dest account", 
         | 
| 85 | 
            +
                                  "dest amount", 
         | 
| 86 | 
            +
                                  "ratio", 
         | 
| 87 | 
            +
                                  "reference_ids").light_blue
         | 
| 88 | 
            +
                    puts "-" * 160
         | 
| 74 89 | 
             
                    @@document[ "transactions" ].each do |id, txn|
         | 
| 75 90 | 
             
                      ratio = ""
         | 
| 76 91 | 
             
                      if txn["source_currency"] != txn["dest_currency"]
         | 
| 77 92 | 
             
                        ratio = Utils.decimal_divide( txn["source_amount"], txn["dest_amount"] )
         | 
| 78 93 | 
             
                      end
         | 
| 79 | 
            -
                       | 
| 80 | 
            -
             | 
| 94 | 
            +
                      outputs << { :date => txn["date"],
         | 
| 95 | 
            +
                                   :lines => [] }
         | 
| 96 | 
            +
                      if Utils.decimal_equal?( txn[ "percentage" ], "100.0" )
         | 
| 97 | 
            +
                        outputs.last[ :lines ] << sprintf("#{cols}", 
         | 
| 98 | 
            +
                                                          id, 
         | 
| 99 | 
            +
                                                          txn["date"], 
         | 
| 100 | 
            +
                                                          "-",
         | 
| 101 | 
            +
                                                          "#{txn[ "source_account"] }.#{txn[ "source_currency"] }", 
         | 
| 102 | 
            +
                                                          txn["source_amount"], 
         | 
| 103 | 
            +
                                                          "#{txn[ "dest_account"] }.#{txn[ "dest_currency"] }", 
         | 
| 104 | 
            +
                                                          txn[ "dest_amount" ], 
         | 
| 105 | 
            +
                                                          ratio, 
         | 
| 106 | 
            +
                                                          txn[ "references" ][0..20] )
         | 
| 107 | 
            +
                      else
         | 
| 108 | 
            +
                        outputs.last[ :lines ] << sprintf("#{cols}", 
         | 
| 109 | 
            +
                                                          id, 
         | 
| 110 | 
            +
                                                          txn["date"], 
         | 
| 111 | 
            +
                                                          "100.0", 
         | 
| 112 | 
            +
                                                          "#{txn["source_account"]}.#{txn["source_currency"]}", 
         | 
| 113 | 
            +
                                                          txn["source_amount"], 
         | 
| 114 | 
            +
                                                          "#{txn["dest_account"]}.#{txn["dest_currency"]}", 
         | 
| 115 | 
            +
                                                          txn[ "dest_amount" ], 
         | 
| 116 | 
            +
                                                          ratio, 
         | 
| 117 | 
            +
                                                          txn[ "references" ][0..20] ).light_black
         | 
| 118 | 
            +
                        outputs.last[ :lines ] << sprintf("#{cols}", 
         | 
| 119 | 
            +
                                                          "", 
         | 
| 120 | 
            +
                                                          "", 
         | 
| 121 | 
            +
                                                          Utils.decimal_add( txn["percentage"], "0.0" ), 
         | 
| 122 | 
            +
                                                          "#{txn["source_account"]}.#{txn["source_currency"]}", 
         | 
| 123 | 
            +
                                                          Utils.decimal_multiply( txn["source_amount"], txn["percentage"], "0.01" ), 
         | 
| 124 | 
            +
                                                          "#{txn["dest_account"]}.#{txn["dest_currency"]}", 
         | 
| 125 | 
            +
                                                          Utils.decimal_multiply( txn[ "dest_amount" ], txn[ "percentage" ], "0.01" ), 
         | 
| 126 | 
            +
                                                          "", 
         | 
| 127 | 
            +
                                                          "" )
         | 
| 128 | 
            +
                      end
         | 
| 81 129 | 
             
                      if txn["fees_account"]
         | 
| 82 | 
            -
                         | 
| 130 | 
            +
                        if Utils.decimal_equal?( txn[ "percentage" ], "100.0" )
         | 
| 131 | 
            +
                          outputs.last[ :lines ] << sprintf("#{cols}", 
         | 
| 132 | 
            +
                                                            "",
         | 
| 133 | 
            +
                                                            "",
         | 
| 134 | 
            +
                                                            "-",
         | 
| 135 | 
            +
                                                            "#{txn["fees_account"]}.#{txn["fees_currency"]}",
         | 
| 136 | 
            +
                                                            txn["fees_amount"],
         | 
| 137 | 
            +
                                                            "FEES.#{txn["fees_currency"]}",
         | 
| 138 | 
            +
                                                            txn[ "fees_amount" ],
         | 
| 139 | 
            +
                                                            "",
         | 
| 140 | 
            +
                                                            "" )
         | 
| 141 | 
            +
                        else
         | 
| 142 | 
            +
                          outputs.last[ :lines ] << sprintf("#{cols}", 
         | 
| 143 | 
            +
                                                            "",
         | 
| 144 | 
            +
                                                            "",
         | 
| 145 | 
            +
                                                            "100.0",
         | 
| 146 | 
            +
                                                            "#{txn["fees_account"]}.#{txn["fees_currency"]}",
         | 
| 147 | 
            +
                                                            txn["fees_amount"], 
         | 
| 148 | 
            +
                                                            "FEES.#{txn["fees_currency"]}",
         | 
| 149 | 
            +
                                                            txn[ "fees_amount" ], 
         | 
| 150 | 
            +
                                                            "",
         | 
| 151 | 
            +
                                                            "" ).light_black
         | 
| 152 | 
            +
                          outputs.last[ :lines ] << sprintf("#{cols}", 
         | 
| 153 | 
            +
                                                            "",
         | 
| 154 | 
            +
                                                            "",
         | 
| 155 | 
            +
                                                            Utils.decimal_add( txn["percentage"], "0.0" ),
         | 
| 156 | 
            +
                                                            "#{txn["fees_account"]}.#{txn["fees_currency"]}",
         | 
| 157 | 
            +
                                                            Utils.decimal_multiply( txn["fees_amount"], txn["percentage"], "0.01" ),
         | 
| 158 | 
            +
                                                            "FEES.#{txn["fees_currency"]}",
         | 
| 159 | 
            +
                                                            Utils.decimal_multiply( txn[ "fees_amount" ], txn["percentage"], "0.01" ),
         | 
| 160 | 
            +
                                                            "",
         | 
| 161 | 
            +
                                                            "" )
         | 
| 162 | 
            +
                        end
         | 
| 83 163 | 
             
                      end
         | 
| 84 164 | 
             
                    end
         | 
| 165 | 
            +
             | 
| 166 | 
            +
                    outputs.sort_by { |k| k[ :date ] }.each do |k|
         | 
| 167 | 
            +
                      k[ :lines ].each do |line|
         | 
| 168 | 
            +
                        puts line
         | 
| 169 | 
            +
                      end
         | 
| 170 | 
            +
                    end
         | 
| 171 | 
            +
             | 
| 85 172 | 
             
                  end
         | 
| 86 173 |  | 
| 87 174 | 
             
                  def self.delete_transaction id
         | 
| @@ -91,48 +178,57 @@ module Gtmtech | |
| 91 178 | 
             
                  def self.reconcile_transactions conversions
         | 
| 92 179 | 
             
                    self.list_transactions
         | 
| 93 180 | 
             
                    puts ""
         | 
| 94 | 
            -
                     | 
| 181 | 
            +
                    cols = "%-20s %-10s %-20s %-30s"
         | 
| 182 | 
            +
                    puts sprintf("#{cols}", "account", "currency", "amount", "GBP equivalent").light_blue
         | 
| 95 183 | 
             
                    puts "-" * 120
         | 
| 96 184 | 
             
                    fees = {}
         | 
| 97 185 | 
             
                    currencies = {}
         | 
| 98 186 | 
             
                    @@document[ "accounts" ].each do | name, account_info |
         | 
| 99 187 | 
             
                      account_info[ "currencies" ].sort.each do | currency |
         | 
| 100 | 
            -
                         | 
| 188 | 
            +
                        total     = "0.0"
         | 
| 189 | 
            +
                        txn_total = "0.0"
         | 
| 101 190 | 
             
                        @@document[ "transactions" ].each do |id, txn|
         | 
| 191 | 
            +
             | 
| 102 192 | 
             
                          # explicit fees
         | 
| 103 193 | 
             
                          if txn[ "fees_account" ] == name and txn[ "fees_currency" ] == currency
         | 
| 104 | 
            -
                             | 
| 194 | 
            +
                            # print "#{txn_total} :     - #{txn[ "percentage" ]}% of #{txn[ "fees_amount" ]}".blue
         | 
| 195 | 
            +
                            txn_total = Utils.decimal_minus( txn_total, Utils.decimal_multiply( txn[ "fees_amount" ], txn[ "percentage" ], "0.01" ) )
         | 
| 196 | 
            +
                            # puts " = #{txn_total}".blue
         | 
| 105 197 | 
             
                            unless fees.key? currency
         | 
| 106 198 | 
             
                              fees[ currency ] = "0.0"
         | 
| 107 199 | 
             
                            end
         | 
| 108 | 
            -
                            fees[ currency ] = Utils.decimal_add( fees[ currency ], txn[ "fees_amount" ])
         | 
| 200 | 
            +
                            fees[ currency ] = Utils.decimal_add( fees[ currency ], Utils.decimal_multiply( txn[ "fees_amount" ], txn[ "percentage" ], "0.01" ) )
         | 
| 109 201 | 
             
                          end
         | 
| 110 202 |  | 
| 111 203 | 
             
                          # account reconciliation
         | 
| 112 204 | 
             
                          if txn[ "source_account" ] == name and txn[ "source_currency" ] == currency
         | 
| 113 | 
            -
                             | 
| 114 | 
            -
             | 
| 205 | 
            +
                            # print "#{txn_total} :     - #{txn[ "percentage" ]}% of #{txn[ "source_amount" ]}".blue
         | 
| 206 | 
            +
                            txn_total = Utils.decimal_minus( txn_total, Utils.decimal_multiply( txn[ "source_amount" ], txn[ "percentage" ], "0.01" ) )
         | 
| 207 | 
            +
                            # puts " = #{txn_total}".blue
         | 
| 208 | 
            +
             
         | 
| 115 209 | 
             
                            # implicit fees
         | 
| 116 210 | 
             
                            if txn[ "source_currency" ] == txn[ "dest_currency" ] and txn[ "source_amount" ] != txn[ "dest_amount" ]
         | 
| 117 211 | 
             
                              implicit_fees = Utils.decimal_minus( txn[ "source_amount" ], txn[ "dest_amount" ] )
         | 
| 118 212 | 
             
                              unless fees.key? currency
         | 
| 119 213 | 
             
                                fees[ currency ] = "0.0"
         | 
| 120 214 | 
             
                              end
         | 
| 121 | 
            -
                              fees[ currency ] = Utils.decimal_add( fees[ currency ], implicit_fees )
         | 
| 215 | 
            +
                              fees[ currency ] = Utils.decimal_add( fees[ currency ], Utils.decimal_multiply( implicit_fees, txn[ "percentage" ], "0.01" ) )
         | 
| 122 216 | 
             
                            end
         | 
| 123 217 |  | 
| 124 218 | 
             
                          end
         | 
| 125 219 | 
             
                          if txn[ "dest_account" ] == name and txn[ "dest_currency" ] == currency
         | 
| 126 | 
            -
                             | 
| 220 | 
            +
                            # print "#{txn_total} :     + #{txn[ "percentage" ]}% of #{txn[ "dest_amount" ]}".blue
         | 
| 221 | 
            +
                            txn_total = Utils.decimal_add( txn_total, Utils.decimal_multiply( txn[ "dest_amount" ], txn[ "percentage" ], "0.01" ) )
         | 
| 222 | 
            +
                            # puts " = #{txn_total}".blue
         | 
| 127 223 | 
             
                          end
         | 
| 128 224 | 
             
                        end
         | 
| 129 225 | 
             
                        unless currencies.key? currency
         | 
| 130 226 | 
             
                          currencies[ currency ] = "0.0"
         | 
| 131 227 | 
             
                        end
         | 
| 132 | 
            -
                        currencies[ currency ] = Utils.decimal_add( currencies[ currency ],  | 
| 228 | 
            +
                        currencies[ currency ] = Utils.decimal_add( currencies[ currency ], txn_total )
         | 
| 133 229 | 
             
                        gbp_equiv = "?"
         | 
| 134 | 
            -
                        gbp_equiv = Utils.decimal_multiply(  | 
| 135 | 
            -
                         | 
| 230 | 
            +
                        gbp_equiv = Utils.decimal_multiply( txn_total, conversions[ currency ] ) if conversions.key? currency
         | 
| 231 | 
            +
                        puts sprintf( "#{cols}", name, currency, txn_total, gbp_equiv )
         | 
| 136 232 | 
             
                      end
         | 
| 137 233 | 
             
                    end
         | 
| 138 234 | 
             
                    fees.keys.sort.each do |currency|
         | 
| @@ -141,11 +237,12 @@ module Gtmtech | |
| 141 237 | 
             
                      end
         | 
| 142 238 | 
             
                      gbp_equiv = "?"
         | 
| 143 239 | 
             
                      gbp_equiv = Utils.decimal_multiply( fees[ currency ], conversions[ currency ] ) if conversions.key? currency
         | 
| 144 | 
            -
                       | 
| 240 | 
            +
                      puts sprintf( "#{cols}", "**FEES**", currency, fees[ currency ], gbp_equiv)
         | 
| 145 241 | 
             
                    end
         | 
| 146 242 |  | 
| 147 243 | 
             
                    puts ""
         | 
| 148 | 
            -
                     | 
| 244 | 
            +
                    cols = "%-10s %-20s"
         | 
| 245 | 
            +
                    puts sprintf( "#{cols}", "currency", "reconciliation" ).light_blue
         | 
| 149 246 | 
             
                    puts "-" * 120
         | 
| 150 247 | 
             
                    currencies.keys.sort.each do |currency|
         | 
| 151 248 | 
             
                      currency_fees = fees[ currency ] || "0.0"
         | 
| @@ -155,25 +252,28 @@ module Gtmtech | |
| 155 252 | 
             
                    gbp_total = "0.0"
         | 
| 156 253 | 
             
                    gbp_known = true
         | 
| 157 254 | 
             
                    puts ""
         | 
| 158 | 
            -
                     | 
| 255 | 
            +
                    cols = "%-10s %-20s %-20s"
         | 
| 256 | 
            +
                    puts sprintf( "#{cols}", "currency", "totals", "GBP equivalent" ).light_blue
         | 
| 159 257 | 
             
                    puts "-" * 120
         | 
| 160 258 | 
             
                    currencies.keys.sort.each do |currency|
         | 
| 161 259 | 
             
                      amount = currencies[ currency ]
         | 
| 162 260 | 
             
                      if conversions.key? currency
         | 
| 163 261 | 
             
                        gbp_equiv = Utils.decimal_multiply( amount, conversions[ currency ] )
         | 
| 164 | 
            -
                         | 
| 262 | 
            +
                        puts sprintf( "#{cols}", currency, currencies[ currency ], gbp_equiv )
         | 
| 165 263 | 
             
                        gbp_total = Utils.decimal_add( gbp_total, gbp_equiv )
         | 
| 166 264 | 
             
                      else
         | 
| 167 | 
            -
                         | 
| 265 | 
            +
                        puts sprintf( "#{cols}", currency, currencies[ currency ], "?" )
         | 
| 168 266 | 
             
                        gbp_known = false
         | 
| 169 267 | 
             
                      end
         | 
| 170 268 | 
             
                    end
         | 
| 171 269 |  | 
| 172 270 | 
             
                    puts ""
         | 
| 271 | 
            +
                    puts "profit/loss (equivalent GBP)".blue
         | 
| 272 | 
            +
                    puts "----------------------------"
         | 
| 173 273 | 
             
                    if gbp_known
         | 
| 174 | 
            -
                      puts  | 
| 274 | 
            +
                      puts gbp_total
         | 
| 175 275 | 
             
                    else
         | 
| 176 | 
            -
                      puts " | 
| 276 | 
            +
                      puts "unknown - specify conversions on command-line - see --help"
         | 
| 177 277 | 
             
                    end
         | 
| 178 278 | 
             
                  end
         | 
| 179 279 |  | 
| @@ -14,7 +14,7 @@ module Gtmtech | |
| 14 14 | 
             
                      <<-EOS
         | 
| 15 15 | 
             
            Usage (crypto #{self.prettyname})
         | 
| 16 16 |  | 
| 17 | 
            -
            crypto #{self.prettyname} new --date=<s> --from=<s> --to=<s> [--fees=<s>]
         | 
| 17 | 
            +
            crypto #{self.prettyname} new --date=<s> --from=<s> --to=<s> [--fees=<s>] [--references=<s>] [--percentage=<s>]
         | 
| 18 18 | 
             
              - create a new transaction
         | 
| 19 19 |  | 
| 20 20 | 
             
            crypto #{self.prettyname} delete --id=<s>
         | 
| @@ -51,7 +51,17 @@ EOS | |
| 51 51 | 
             
                       {:name => :id,
         | 
| 52 52 | 
             
                        :description => "Specify the id you wish to amend/delete in a delete operation",
         | 
| 53 53 | 
             
                        :short => 'i',
         | 
| 54 | 
            -
                        :type => :string}
         | 
| 54 | 
            +
                        :type => :string},
         | 
| 55 | 
            +
                       {:name => :references,
         | 
| 56 | 
            +
                        :description => "Specify any thirdparty / blockchain reference IDs associated with the transaction (Optional)",
         | 
| 57 | 
            +
                        :short => 'r',
         | 
| 58 | 
            +
                        :type => :string,
         | 
| 59 | 
            +
                        :default => ""},
         | 
| 60 | 
            +
                       {:name => :percentage,
         | 
| 61 | 
            +
                        :description => "Percentage of the transaction which actually applies to this profile (for the case of a transaction which spans multiple profiles and should only be counted in part) (Optional)",
         | 
| 62 | 
            +
                        :short => 'p',
         | 
| 63 | 
            +
                        :type => :string,
         | 
| 64 | 
            +
                        :default => "100.0"}
         | 
| 55 65 | 
             
                      ]
         | 
| 56 66 | 
             
                    end
         | 
| 57 67 |  | 
| @@ -93,7 +103,7 @@ EOS | |
| 93 103 | 
             
                      Data.load
         | 
| 94 104 | 
             
                      self.error "The account #{source_account}.#{source_currency} does not yet exist" unless Data.account_exists? source_account, source_currency
         | 
| 95 105 | 
             
                      self.error "The account #{dest_account}.#{dest_currency} does not yet exist"     unless Data.account_exists? dest_account, dest_currency
         | 
| 96 | 
            -
                      Data.add_transaction @@options[:date], source_account, source_currency, source_amount, dest_account, dest_currency, dest_amount, fees_account, fees_currency, fees_amount
         | 
| 106 | 
            +
                      Data.add_transaction @@options[:date], source_account, source_currency, source_amount, dest_account, dest_currency, dest_amount, fees_account, fees_currency, fees_amount, @@options[ :references ], @@options[ :percentage ]
         | 
| 97 107 | 
             
                      Data.save
         | 
| 98 108 | 
             
                    end
         | 
| 99 109 |  | 
    
        data/lib/gtmtech/crypto/utils.rb
    CHANGED
    
    | @@ -60,21 +60,24 @@ module Gtmtech | |
| 60 60 | 
             
                  end
         | 
| 61 61 |  | 
| 62 62 | 
             
                  def self.decimal_add decimal1, decimal2
         | 
| 63 | 
            -
                    ( BigDecimal( decimal1 ) + BigDecimal( decimal2 ) ).to_s("F")
         | 
| 63 | 
            +
                    ( BigDecimal( decimal1 ) + BigDecimal( decimal2 ) ).truncate(8).to_s("F")
         | 
| 64 64 | 
             
                  end
         | 
| 65 65 |  | 
| 66 66 | 
             
                  def self.decimal_minus decimal1, decimal2
         | 
| 67 | 
            -
                    ( BigDecimal( decimal1 ) - BigDecimal( decimal2 ) ).to_s("F")
         | 
| 67 | 
            +
                    ( BigDecimal( decimal1 ) - BigDecimal( decimal2 ) ).truncate(8).to_s("F")
         | 
| 68 68 | 
             
                  end
         | 
| 69 69 |  | 
| 70 | 
            -
                  def self.decimal_multiply decimal1, decimal2
         | 
| 71 | 
            -
                    ( BigDecimal( decimal1 ) * BigDecimal( decimal2 ) ).truncate(8).to_s("F")
         | 
| 70 | 
            +
                  def self.decimal_multiply decimal1, decimal2, decimal3 = "1.0"
         | 
| 71 | 
            +
                    ( BigDecimal( decimal1 ) * BigDecimal( decimal2 ) * BigDecimal( decimal3 ) ).truncate(8).to_s("F")
         | 
| 72 72 | 
             
                  end
         | 
| 73 73 |  | 
| 74 74 | 
             
                  def self.decimal_divide decimal1, decimal2
         | 
| 75 75 | 
             
                    ( BigDecimal( decimal1 ) / BigDecimal( decimal2 ) ).truncate(8).to_s("F")
         | 
| 76 76 | 
             
                  end
         | 
| 77 77 |  | 
| 78 | 
            +
                  def self.decimal_equal? decimal1, decimal2
         | 
| 79 | 
            +
                    BigDecimal( decimal1 ) == BigDecimal( decimal2 )
         | 
| 80 | 
            +
                  end
         | 
| 78 81 | 
             
                end
         | 
| 79 82 | 
             
              end
         | 
| 80 83 | 
             
            end
         | 
    
        data/lib/gtmtech/crypto.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: gtmtech-crypto
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.1. | 
| 4 | 
            +
              version: 0.1.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Geoff Meakin
         | 
| @@ -24,6 +24,20 @@ dependencies: | |
| 24 24 | 
             
                - - ~>
         | 
| 25 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 26 | 
             
                    version: '2.0'
         | 
| 27 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 28 | 
            +
              name: colorize
         | 
| 29 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 | 
            +
                requirements:
         | 
| 31 | 
            +
                - - ~>
         | 
| 32 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            +
                    version: 0.8.1
         | 
| 34 | 
            +
              type: :runtime
         | 
| 35 | 
            +
              prerelease: false
         | 
| 36 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 | 
            +
                requirements:
         | 
| 38 | 
            +
                - - ~>
         | 
| 39 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            +
                    version: 0.8.1
         | 
| 27 41 | 
             
            description: Simple tool for accounting of cryptocurrencies
         | 
| 28 42 | 
             
            email: 
         | 
| 29 43 | 
             
            executables:
         |