vfwcash 0.4.1 → 0.5.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c1076bb101739c044d695e87a611f149d72f181d
4
- data.tar.gz: 0e80c9a791c5e3a12b30f8d63112a9cfadd0a5e7
3
+ metadata.gz: a1146c716225b13be6491966b4f79f365a5b1cb6
4
+ data.tar.gz: 77ff40fa3a35832cb9d1ffa8b9ecc2b7adeee6e0
5
5
  SHA512:
6
- metadata.gz: d7869ec15dcdfdcf5dd3f2aa8be2d650e72e12558aeccdf95256a3a836069ce02ddbe20bf8f2a49b40d1753455c1930561e42b86823aff57bc3609a40d4e36db
7
- data.tar.gz: 31f7f092990d62edf02be26e7c66b0570ee03d9f1cbf6342ef9d4959561f42f4446315c9bce1b4cca5bb0e61479b64f0497fd07b26f2edb06713d398d9d209de
6
+ metadata.gz: 10e24c080fb7f18733b083d14cbcc6998eeceeaf27fc19f575f1242c434a52bb5476c47b02a87239c5c874ca5a860c76dd07f24d43882a405ce7cd2ffee9a23e
7
+ data.tar.gz: 53399ee5976e7ac00b5452c7a1b82043e1cf58c4ca08e9163017c4575905aa79fc06482490a7985a8e0b9152374be8dc37f7513ef4324096efefd90455e14524
@@ -0,0 +1,30 @@
1
+ class ProfitLoss
2
+
3
+ attr_accessor :from, :to, :flipper, :report
4
+
5
+ def generate(from,to)
6
+ @from = Vfwcash.set_date(from)
7
+ @to = Vfwcash.set_date(to)
8
+ i = CashAccount.find_by(name:'Income')
9
+ e = CashAccount.find_by(name:'Expenses')
10
+ @report = {"Income" => {amount:period_splits(i),total:0,children:{}}, "Expense" => {amount:period_splits(e),total:0,children:{}}}
11
+ tree(i,report['Income'])
12
+ tree(e,report['Expense'])
13
+ return self
14
+ end
15
+
16
+ def tree(branch,hash)
17
+ branch.children.each do |c|
18
+ hash[:children][c.name] = {amount:period_splits(c),total:0,children: {}}
19
+ tree(c,hash[:children][c.name])
20
+ hash[:total] += (hash[:children][c.name][:amount] + hash[:children][c.name][:total])
21
+ end
22
+ end
23
+
24
+ def period_splits(acct)
25
+ flipper = acct.account_type == 'INCOME' ? -1 : 1
26
+ sp = acct.splits.joins(:tran).where('transactions.post_date between ? and ?',from.strftime('%Y%m%d')+'00',to.strftime('%Y%m%d')+'24')
27
+ sp.sum(:value_num) * flipper
28
+ end
29
+
30
+ end
data/lib/vfwcash/api.rb CHANGED
@@ -19,6 +19,10 @@ module Vfwcash
19
19
  pdf = Pdf::Between.new(@date,@cash,from,to)
20
20
  end
21
21
 
22
+ def profit_loss(from,to)
23
+ pl = ProfitLoss.new.generate(from,to)
24
+ end
25
+
22
26
  def ledger
23
27
  pdf = Pdf::Ledger.new(@date,@cash)
24
28
  end
@@ -1,3 +1,3 @@
1
1
  module Vfwcash
2
- VERSION = "0.4.1"
2
+ VERSION = "0.5.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vfwcash
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steve Alex
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-11 00:00:00.000000000 Z
11
+ date: 2017-05-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -142,6 +142,7 @@ files:
142
142
  - lib/models/cash_account.rb
143
143
  - lib/models/gcash.rb
144
144
  - lib/models/ledger.rb
145
+ - lib/models/profit_loss.rb
145
146
  - lib/models/register.rb
146
147
  - lib/models/split.rb
147
148
  - lib/models/split_ledger.rb
@@ -191,7 +192,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
191
192
  version: '0'
192
193
  requirements: []
193
194
  rubyforge_project:
194
- rubygems_version: 2.4.5
195
+ rubygems_version: 2.6.12
195
196
  signing_key:
196
197
  specification_version: 4
197
198
  summary: Simple command line tool/pseudo API to generate PDF reports from GNUCash.