finapps 0.14.5.pre → 0.15.0.pre

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: 95b98812a0e128e3d789ccd2f95e60bbb4e945c1
4
- data.tar.gz: 19fb4b9b938ea074f749f202cf33519b86d75b4c
3
+ metadata.gz: e9f7148284d896dd04a58e18089ace00226d5ad4
4
+ data.tar.gz: f4e7fe20e55f81774ff535adf4ae90829b8f85cc
5
5
  SHA512:
6
- metadata.gz: 1260e687e2c864124ea761a5769ae782e6b9d221cf407ccda68b3058185cab19b3309dd9ad9ce7328b183544abe02cb03673dd42c3348f0474d4b91a39684efc
7
- data.tar.gz: 261c9c70d7154955a5d56f5e8cc8f309b7db9bd6f715fbbd3d93a66e70a24f87a0eeaa307f43c1929317ac16ff5f24837416ae523199ce99ee6ea9134f2fdc49
6
+ metadata.gz: 7e7dab72ef0663b55c48077bd94820222c1a4c2459633930d4b1fe6cc7c02059975c7484b4a4bfc09132e879faa2525409ef95cf804f0271ec2823b3f49bae00
7
+ data.tar.gz: c3d117ae24215b6e9c0c7b4382a1a6ce4133ba552440c765c6a94df1d1ee25dabdc9ccc25c01e544839bcc722c75bad05011065a0de433213a261d37f1df71a0
@@ -32,8 +32,8 @@ module FinApps
32
32
 
33
33
  raise MissingArgumentsError.new 'Missing argument: alert_id.' if alert_id.blank?
34
34
  logger.debug "##{__method__.to_s} => alert_id: #{alert_id.inspect}"
35
- raise MissingArgumentsError.new 'Missing argument: alert_id.' if read.blank?
36
- logger.debug "##{__method__.to_s} => alert_id: #{read.inspect}"
35
+ raise MissingArgumentsError.new 'Missing argument: read.' if read.blank?
36
+ logger.debug "##{__method__.to_s} => read: #{read.inspect}"
37
37
 
38
38
  end_point = Defaults::END_POINTS[:alert_update]
39
39
  logger.debug "##{__method__.to_s} => end_point: #{end_point}"
@@ -54,14 +54,11 @@ module FinApps
54
54
 
55
55
  raise MissingArgumentsError.new 'Missing argument: alert_id.' if alert_id.blank?
56
56
  logger.debug "##{__method__.to_s} => alert_id: #{alert_id.inspect}"
57
- raise MissingArgumentsError.new 'Missing argument: alert_id.' if read.blank?
58
- logger.debug "##{__method__.to_s} => alert_id: #{read.inspect}"
59
57
 
60
58
  end_point = Defaults::END_POINTS[:alert_delete]
61
59
  logger.debug "##{__method__.to_s} => end_point: #{end_point}"
62
60
 
63
61
  path = end_point.sub ':alert_id', ERB::Util.url_encode(alert_id)
64
- path = path.sub ':read', ERB::Util.url_encode(read)
65
62
  logger.debug "##{__method__.to_s} => path: #{path}"
66
63
 
67
64
  _, error_messages = @client.send(path, :delete)
@@ -0,0 +1,97 @@
1
+ module FinApps
2
+ module REST
3
+
4
+ require 'erb'
5
+
6
+ class Budgets < FinApps::REST::Resources
7
+ include FinApps::REST::Defaults
8
+
9
+ # @param [Date] start_date
10
+ # @param [Date] end_date
11
+ # @return [Hash, Array<String>]
12
+ def show(start_date, end_date)
13
+ logger.debug "##{__method__.to_s} => Started"
14
+
15
+ raise MissingArgumentsError.new 'Missing argument: start_date.' if start_date.blank?
16
+ logger.debug "##{__method__.to_s} => start_date: #{start_date}"
17
+ raise MissingArgumentsError.new 'Missing argument: end_date.' if end_date.blank?
18
+ logger.debug "##{__method__.to_s} => end_date: #{end_date}"
19
+
20
+ budget = Budget.new({:start_date => start_date, :end_date => end_date, :details => []})
21
+
22
+ end_point = Defaults::END_POINTS[:budget_show]
23
+ logger.debug "##{__method__.to_s} => end_point: #{end_point}"
24
+
25
+ path = end_point.sub(':start_date', ERB::Util.url_encode(start_date)).sub(':end_date', ERB::Util.url_encode(end_date))
26
+ logger.debug "##{__method__.to_s} => path: #{path}"
27
+
28
+ result, error_messages = @client.send(path, :get)
29
+ if result.present? && error_messages.blank?
30
+ transactions = result.find { |r| r.has_key?('trans') }
31
+ categories = result.find { |r| r.has_key?('cats') }
32
+
33
+ raise 'Category results set for budget is not an array.' unless categories.respond_to?(:each)
34
+ categories['cats'].each do |c|
35
+
36
+ raise 'Unable to locate category id for current category record.' unless c.key?['cat_id']
37
+ category_id = c['cat_id']
38
+
39
+ raise 'Unable to locate budget_amount for current category record.' unless c.key?['budget_amount'] && c.key?['days']
40
+ raise 'Unable to locate number of days for current category record.' unless c.key?['days']
41
+ budget_amount = c['budget_amount'].to_f * c['days'].to_i
42
+
43
+ raise 'Unable to locate category name for current category record.' unless c.key?['name']
44
+ category_name = c['name']
45
+
46
+ budget.details << BudgetDetail.new({:category_id => category_id,
47
+ :category_name => category_name,
48
+ :budget_amount => budget_amount,
49
+ :expense_amount => expense_amount(category_id, transactions)})
50
+ end
51
+ end
52
+
53
+
54
+ logger.debug "##{__method__.to_s} => Completed"
55
+ return budget, error_messages
56
+ end
57
+
58
+ # @param [Hash] params
59
+ # @return [Array<Hash>, Array<String>]
60
+ def update(params={})
61
+ logger.debug "##{__method__.to_s} => Started"
62
+
63
+ raise MissingArgumentsError.new 'Missing argument: params.' if params.blank?
64
+
65
+ end_point = Defaults::END_POINTS[:budget_update]
66
+ logger.debug "##{__method__.to_s} => end_point: #{end_point}"
67
+
68
+ budget, error_messages = @client.send(end_point, :put, params)
69
+ logger.debug "##{__method__.to_s} => Completed"
70
+
71
+ return budget, error_messages
72
+ end
73
+
74
+ private
75
+ def expense_amount(category_id, transactions)
76
+ amount = 0
77
+ if category_id.present? && transactions.respond_to?(:find)
78
+ transaction = transactions.find { |t| t['category_id'] == category_id }
79
+ if transaction.present? && transaction.key?['expense']
80
+ amount = transaction['expense'].to_f
81
+ end
82
+ end
83
+ amount
84
+ end
85
+
86
+ end
87
+
88
+ class Budget < FinApps::REST::Resource
89
+ attr_accessor :start_date, :end_date, :details
90
+ end
91
+
92
+ class BudgetDetail < FinApps::REST::Resource
93
+ attr_accessor :category_id, :category_name, :budget_amount, :expense_amount
94
+ end
95
+
96
+ end
97
+ end
@@ -7,7 +7,7 @@ module FinApps
7
7
 
8
8
  attr_reader :connection, :users, :institutions, :user_institutions,
9
9
  :transactions, :categories,
10
- :budget_models, :budget_calculation, :budget, :cashflow,
10
+ :budget_models, :budget_calculation, :budgets, :cashflow,
11
11
  :alert, :alert_definition, :alert_setting,
12
12
  :rule_sets
13
13
 
@@ -201,7 +201,7 @@ module FinApps
201
201
  @categories ||= FinApps::REST::Categories.new self
202
202
  @budget_models ||= FinApps::REST::BudgetModels.new self
203
203
  @budget_calculation ||= FinApps::REST::BudgetCalculation.new self
204
- @budget ||= FinApps::REST::Budget.new self
204
+ @budgets ||= FinApps::REST::Budgets.new self
205
205
  @cashflow ||= FinApps::REST::Cashflow.new self
206
206
  @alert ||= FinApps::REST::Alert.new self
207
207
  @alert_definition ||= FinApps::REST::AlertDefinition.new self
@@ -1,3 +1,3 @@
1
1
  module FinApps
2
- VERSION = '0.14.5.pre'
2
+ VERSION = '0.15.0.pre'
3
3
  end
data/lib/finapps.rb CHANGED
@@ -26,7 +26,7 @@ require 'finapps/rest/transactions'
26
26
  require 'finapps/rest/categories'
27
27
  require 'finapps/rest/budget_models'
28
28
  require 'finapps/rest/budget_calculation'
29
- require 'finapps/rest/budget'
29
+ require 'finapps/rest/budgets'
30
30
  require 'finapps/rest/cashflow'
31
31
  require 'finapps/rest/alert'
32
32
  require 'finapps/rest/alert_definition'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: finapps
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.5.pre
4
+ version: 0.15.0.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - Erich Quintero
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-05 00:00:00.000000000 Z
11
+ date: 2015-02-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -200,9 +200,9 @@ files:
200
200
  - lib/finapps/rest/alert.rb
201
201
  - lib/finapps/rest/alert_definition.rb
202
202
  - lib/finapps/rest/alert_setting.rb
203
- - lib/finapps/rest/budget.rb
204
203
  - lib/finapps/rest/budget_calculation.rb
205
204
  - lib/finapps/rest/budget_models.rb
205
+ - lib/finapps/rest/budgets.rb
206
206
  - lib/finapps/rest/cashflow.rb
207
207
  - lib/finapps/rest/categories.rb
208
208
  - lib/finapps/rest/client.rb
@@ -1,50 +0,0 @@
1
- module FinApps
2
- module REST
3
-
4
- require 'erb'
5
-
6
- class Budget < FinApps::REST::Resources
7
- include FinApps::REST::Defaults
8
-
9
- # @param [Date] start_date
10
- # @param [Date] end_date
11
- # @return [Hash, Array<String>]
12
- def show(start_date, end_date)
13
- logger.debug "##{__method__.to_s} => Started"
14
-
15
- raise MissingArgumentsError.new 'Missing argument: start_date.' if start_date.blank?
16
- logger.debug "##{__method__.to_s} => start_date: #{start_date}"
17
- raise MissingArgumentsError.new 'Missing argument: end_date.' if end_date.blank?
18
- logger.debug "##{__method__.to_s} => end_date: #{end_date}"
19
-
20
- end_point = Defaults::END_POINTS[:budget_show]
21
- logger.debug "##{__method__.to_s} => end_point: #{end_point}"
22
-
23
- path = end_point.sub(':start_date', ERB::Util.url_encode(start_date)).sub(':end_date', ERB::Util.url_encode(end_date))
24
- logger.debug "##{__method__.to_s} => path: #{path}"
25
-
26
- budget, error_messages = @client.send(path, :get)
27
-
28
- logger.debug "##{__method__.to_s} => Completed"
29
- return budget, error_messages
30
- end
31
-
32
- # @param [Hash] params
33
- # @return [Array<Hash>, Array<String>]
34
- def update(params={})
35
- logger.debug "##{__method__.to_s} => Started"
36
-
37
- raise MissingArgumentsError.new 'Missing argument: params.' if params.blank?
38
-
39
- end_point = Defaults::END_POINTS[:budget_update]
40
- logger.debug "##{__method__.to_s} => end_point: #{end_point}"
41
-
42
- budget, error_messages = @client.send(end_point, :put, params)
43
- logger.debug "##{__method__.to_s} => Completed"
44
-
45
- return budget, error_messages
46
- end
47
-
48
- end
49
- end
50
- end