hydrogen-proton-api 1.9.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.
Files changed (217) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +7 -0
  3. data/README.md +82 -0
  4. data/Rakefile +8 -0
  5. data/git_push.sh +55 -0
  6. data/lib/proton_api.rb +141 -0
  7. data/lib/proton_api/api/annuities_api.rb +347 -0
  8. data/lib/proton_api/api/business_financial_management_api.rb +293 -0
  9. data/lib/proton_api/api/cards_api.rb +185 -0
  10. data/lib/proton_api/api/financial_health_api.rb +239 -0
  11. data/lib/proton_api/api/financial_planning_api.rb +671 -0
  12. data/lib/proton_api/api/goals_api.rb +347 -0
  13. data/lib/proton_api/api/life_insurance_api.rb +77 -0
  14. data/lib/proton_api/api/personal_financial_management_api.rb +347 -0
  15. data/lib/proton_api/api/portfolio_construction_api.rb +77 -0
  16. data/lib/proton_api/api/portfolio_management_api.rb +77 -0
  17. data/lib/proton_api/api/risk_scoring_api.rb +185 -0
  18. data/lib/proton_api/api/simulations_api.rb +401 -0
  19. data/lib/proton_api/api/util_api.rb +185 -0
  20. data/lib/proton_api/api_client.rb +391 -0
  21. data/lib/proton_api/api_error.rb +38 -0
  22. data/lib/proton_api/auth_configuration.rb +181 -0
  23. data/lib/proton_api/configuration.rb +209 -0
  24. data/lib/proton_api/environment.rb +36 -0
  25. data/lib/proton_api/models/accumulation_goal_deposit_config.rb +338 -0
  26. data/lib/proton_api/models/annuity_calculator_accumulation_horizon_request.rb +459 -0
  27. data/lib/proton_api/models/annuity_calculator_annuity_amount_request.rb +461 -0
  28. data/lib/proton_api/models/annuity_calculator_decumulation_horizon_request.rb +459 -0
  29. data/lib/proton_api/models/annuity_calculator_deposit_amount_request.rb +468 -0
  30. data/lib/proton_api/models/annuity_calculator_initial_balance_request.rb +468 -0
  31. data/lib/proton_api/models/annuity_deposit_schedule.rb +254 -0
  32. data/lib/proton_api/models/answer.rb +186 -0
  33. data/lib/proton_api/models/backtest_request.rb +295 -0
  34. data/lib/proton_api/models/beneficiary_bequest_config.rb +257 -0
  35. data/lib/proton_api/models/budget_aggregation_account.rb +186 -0
  36. data/lib/proton_api/models/budget_calculator_request.rb +334 -0
  37. data/lib/proton_api/models/budget_component.rb +228 -0
  38. data/lib/proton_api/models/budget_details.rb +337 -0
  39. data/lib/proton_api/models/business_financial_health_check_request.rb +484 -0
  40. data/lib/proton_api/models/business_invoice_analysis_request.rb +361 -0
  41. data/lib/proton_api/models/calculator_deposit_schedule.rb +228 -0
  42. data/lib/proton_api/models/calculator_deposit_schedule1.rb +254 -0
  43. data/lib/proton_api/models/card_analysis_request.rb +372 -0
  44. data/lib/proton_api/models/card_limit_check_request.rb +231 -0
  45. data/lib/proton_api/models/card_transaction_authorization_request.rb +422 -0
  46. data/lib/proton_api/models/cash_analysis_request.rb +340 -0
  47. data/lib/proton_api/models/cash_flow_analysis_request.rb +366 -0
  48. data/lib/proton_api/models/children_education_config.rb +221 -0
  49. data/lib/proton_api/models/customer_analysis_request.rb +292 -0
  50. data/lib/proton_api/models/decision_tree_result_request.rb +236 -0
  51. data/lib/proton_api/models/decumulation_goal_deposit_config.rb +335 -0
  52. data/lib/proton_api/models/dimensional_risk_score_request.rb +282 -0
  53. data/lib/proton_api/models/diversification_score_request.rb +324 -0
  54. data/lib/proton_api/models/education_calculator_annual_cost_request.rb +450 -0
  55. data/lib/proton_api/models/education_calculator_deposit_amount_request.rb +483 -0
  56. data/lib/proton_api/models/education_calculator_percent_covered_request.rb +448 -0
  57. data/lib/proton_api/models/education_config.rb +271 -0
  58. data/lib/proton_api/models/emergency_fund_calculator_request.rb +561 -0
  59. data/lib/proton_api/models/event_study_request.rb +317 -0
  60. data/lib/proton_api/models/fee_analysis_request.rb +239 -0
  61. data/lib/proton_api/models/financial_health_check_request.rb +384 -0
  62. data/lib/proton_api/models/financial_picture_request.rb +270 -0
  63. data/lib/proton_api/models/financial_statement_analysis_request.rb +461 -0
  64. data/lib/proton_api/models/goal_accumulation_allocation_request.rb +729 -0
  65. data/lib/proton_api/models/goal_accumulation_recommendation_request.rb +622 -0
  66. data/lib/proton_api/models/goal_accumulation_status_request.rb +622 -0
  67. data/lib/proton_api/models/goal_config.rb +222 -0
  68. data/lib/proton_api/models/goal_decumulation_allocation_request.rb +764 -0
  69. data/lib/proton_api/models/goal_decumulation_recommendation_request.rb +657 -0
  70. data/lib/proton_api/models/goal_decumulation_status_request.rb +657 -0
  71. data/lib/proton_api/models/goal_withdrawal_config.rb +335 -0
  72. data/lib/proton_api/models/guaranteed_rate_benefit.rb +272 -0
  73. data/lib/proton_api/models/income_config.rb +266 -0
  74. data/lib/proton_api/models/life_insurance_needs_calculator_request.rb +515 -0
  75. data/lib/proton_api/models/location.rb +183 -0
  76. data/lib/proton_api/models/monte_carlo_request.rb +504 -0
  77. data/lib/proton_api/models/mortgage_calculator_down_payment_request.rb +299 -0
  78. data/lib/proton_api/models/mortgage_calculator_home_price_request.rb +299 -0
  79. data/lib/proton_api/models/mortgage_calculator_periodic_payment_request.rb +299 -0
  80. data/lib/proton_api/models/mvo_request.rb +366 -0
  81. data/lib/proton_api/models/opt_config.rb +300 -0
  82. data/lib/proton_api/models/opt_config1.rb +260 -0
  83. data/lib/proton_api/models/order_rebalance_request.rb +398 -0
  84. data/lib/proton_api/models/performance_calculator_request.rb +687 -0
  85. data/lib/proton_api/models/periods.rb +220 -0
  86. data/lib/proton_api/models/portfolio_optimization_score_request.rb +356 -0
  87. data/lib/proton_api/models/portfolio_what_if_request.rb +351 -0
  88. data/lib/proton_api/models/purchase_calculator_amount_request.rb +401 -0
  89. data/lib/proton_api/models/purchase_calculator_deposit_amount_request.rb +434 -0
  90. data/lib/proton_api/models/purchase_calculator_horizon_request.rb +356 -0
  91. data/lib/proton_api/models/ratio_targets.rb +328 -0
  92. data/lib/proton_api/models/ratio_targets1.rb +328 -0
  93. data/lib/proton_api/models/rebalancing_signal_request.rb +238 -0
  94. data/lib/proton_api/models/recommendation_config.rb +357 -0
  95. data/lib/proton_api/models/recommendation_config1.rb +346 -0
  96. data/lib/proton_api/models/recurring_transaction_analysis_request.rb +400 -0
  97. data/lib/proton_api/models/retirement_calculator_deposit_amount_request.rb +509 -0
  98. data/lib/proton_api/models/retirement_calculator_expenses_request.rb +476 -0
  99. data/lib/proton_api/models/retirement_calculator_percent_covered_request.rb +474 -0
  100. data/lib/proton_api/models/risk_allocation_request.rb +316 -0
  101. data/lib/proton_api/models/risk_score_request.rb +239 -0
  102. data/lib/proton_api/models/savings_calculator_request.rb +395 -0
  103. data/lib/proton_api/models/savings_deposit_schedule.rb +276 -0
  104. data/lib/proton_api/models/scenario_analysis_request.rb +401 -0
  105. data/lib/proton_api/models/sensitivity_analysis_request.rb +399 -0
  106. data/lib/proton_api/models/sensitivity_factor.rb +278 -0
  107. data/lib/proton_api/models/settings.rb +287 -0
  108. data/lib/proton_api/models/spending_analysis_request.rb +505 -0
  109. data/lib/proton_api/models/variable_annuity_request.rb +700 -0
  110. data/lib/proton_api/models/w_config.rb +382 -0
  111. data/lib/proton_api/models/w_config1.rb +347 -0
  112. data/lib/proton_api/version.rb +15 -0
  113. data/proton_api.gemspec +46 -0
  114. data/spec/api/annuities_api_spec.rb +107 -0
  115. data/spec/api/business_financial_management_api_spec.rb +95 -0
  116. data/spec/api/cards_api_spec.rb +71 -0
  117. data/spec/api/financial_health_api_spec.rb +83 -0
  118. data/spec/api/financial_planning_api_spec.rb +179 -0
  119. data/spec/api/goals_api_spec.rb +107 -0
  120. data/spec/api/life_insurance_api_spec.rb +47 -0
  121. data/spec/api/personal_financial_management_api_spec.rb +107 -0
  122. data/spec/api/portfolio_construction_api_spec.rb +47 -0
  123. data/spec/api/portfolio_management_api_spec.rb +47 -0
  124. data/spec/api/risk_scoring_api_spec.rb +71 -0
  125. data/spec/api/simulations_api_spec.rb +119 -0
  126. data/spec/api/util_api_spec.rb +71 -0
  127. data/spec/api_client_spec.rb +243 -0
  128. data/spec/configuration_spec.rb +42 -0
  129. data/spec/models/accumulation_goal_deposit_config_spec.rb +89 -0
  130. data/spec/models/annuity_calculator_accumulation_horizon_request_spec.rb +111 -0
  131. data/spec/models/annuity_calculator_annuity_amount_request_spec.rb +111 -0
  132. data/spec/models/annuity_calculator_decumulation_horizon_request_spec.rb +111 -0
  133. data/spec/models/annuity_calculator_deposit_amount_request_spec.rb +111 -0
  134. data/spec/models/annuity_calculator_initial_balance_request_spec.rb +111 -0
  135. data/spec/models/annuity_deposit_schedule_spec.rb +57 -0
  136. data/spec/models/answer_spec.rb +41 -0
  137. data/spec/models/backtest_request_spec.rb +95 -0
  138. data/spec/models/beneficiary_bequest_config_spec.rb +53 -0
  139. data/spec/models/budget_aggregation_account_spec.rb +41 -0
  140. data/spec/models/budget_calculator_request_spec.rb +105 -0
  141. data/spec/models/budget_component_spec.rb +53 -0
  142. data/spec/models/budget_details_spec.rb +99 -0
  143. data/spec/models/business_financial_health_check_request_spec.rb +143 -0
  144. data/spec/models/business_invoice_analysis_request_spec.rb +123 -0
  145. data/spec/models/calculator_deposit_schedule1_spec.rb +57 -0
  146. data/spec/models/calculator_deposit_schedule_spec.rb +51 -0
  147. data/spec/models/card_analysis_request_spec.rb +129 -0
  148. data/spec/models/card_limit_check_request_spec.rb +65 -0
  149. data/spec/models/card_transaction_authorization_request_spec.rb +157 -0
  150. data/spec/models/cash_analysis_request_spec.rb +115 -0
  151. data/spec/models/cash_flow_analysis_request_spec.rb +135 -0
  152. data/spec/models/children_education_config_spec.rb +47 -0
  153. data/spec/models/customer_analysis_request_spec.rb +101 -0
  154. data/spec/models/decision_tree_result_request_spec.rb +51 -0
  155. data/spec/models/decumulation_goal_deposit_config_spec.rb +89 -0
  156. data/spec/models/dimensional_risk_score_request_spec.rb +89 -0
  157. data/spec/models/diversification_score_request_spec.rb +111 -0
  158. data/spec/models/education_calculator_annual_cost_request_spec.rb +101 -0
  159. data/spec/models/education_calculator_deposit_amount_request_spec.rb +107 -0
  160. data/spec/models/education_calculator_percent_covered_request_spec.rb +101 -0
  161. data/spec/models/education_config_spec.rb +53 -0
  162. data/spec/models/emergency_fund_calculator_request_spec.rb +141 -0
  163. data/spec/models/event_study_request_spec.rb +109 -0
  164. data/spec/models/fee_analysis_request_spec.rb +77 -0
  165. data/spec/models/financial_health_check_request_spec.rb +95 -0
  166. data/spec/models/financial_picture_request_spec.rb +95 -0
  167. data/spec/models/financial_statement_analysis_request_spec.rb +155 -0
  168. data/spec/models/goal_accumulation_allocation_request_spec.rb +215 -0
  169. data/spec/models/goal_accumulation_recommendation_request_spec.rb +173 -0
  170. data/spec/models/goal_accumulation_status_request_spec.rb +173 -0
  171. data/spec/models/goal_config_spec.rb +47 -0
  172. data/spec/models/goal_decumulation_allocation_request_spec.rb +221 -0
  173. data/spec/models/goal_decumulation_recommendation_request_spec.rb +179 -0
  174. data/spec/models/goal_decumulation_status_request_spec.rb +179 -0
  175. data/spec/models/goal_withdrawal_config_spec.rb +89 -0
  176. data/spec/models/guaranteed_rate_benefit_spec.rb +59 -0
  177. data/spec/models/income_config_spec.rb +53 -0
  178. data/spec/models/life_insurance_needs_calculator_request_spec.rb +125 -0
  179. data/spec/models/location_spec.rb +41 -0
  180. data/spec/models/monte_carlo_request_spec.rb +179 -0
  181. data/spec/models/mortgage_calculator_down_payment_request_spec.rb +59 -0
  182. data/spec/models/mortgage_calculator_home_price_request_spec.rb +59 -0
  183. data/spec/models/mortgage_calculator_periodic_payment_request_spec.rb +59 -0
  184. data/spec/models/mvo_request_spec.rb +113 -0
  185. data/spec/models/opt_config1_spec.rb +69 -0
  186. data/spec/models/opt_config_spec.rb +81 -0
  187. data/spec/models/order_rebalance_request_spec.rb +123 -0
  188. data/spec/models/performance_calculator_request_spec.rb +233 -0
  189. data/spec/models/periods_spec.rb +47 -0
  190. data/spec/models/portfolio_optimization_score_request_spec.rb +127 -0
  191. data/spec/models/portfolio_what_if_request_spec.rb +123 -0
  192. data/spec/models/purchase_calculator_amount_request_spec.rb +93 -0
  193. data/spec/models/purchase_calculator_deposit_amount_request_spec.rb +99 -0
  194. data/spec/models/purchase_calculator_horizon_request_spec.rb +83 -0
  195. data/spec/models/ratio_targets1_spec.rb +71 -0
  196. data/spec/models/ratio_targets_spec.rb +71 -0
  197. data/spec/models/rebalancing_signal_request_spec.rb +71 -0
  198. data/spec/models/recommendation_config1_spec.rb +77 -0
  199. data/spec/models/recommendation_config_spec.rb +83 -0
  200. data/spec/models/recurring_transaction_analysis_request_spec.rb +129 -0
  201. data/spec/models/retirement_calculator_deposit_amount_request_spec.rb +113 -0
  202. data/spec/models/retirement_calculator_expenses_request_spec.rb +107 -0
  203. data/spec/models/retirement_calculator_percent_covered_request_spec.rb +107 -0
  204. data/spec/models/risk_allocation_request_spec.rb +85 -0
  205. data/spec/models/risk_score_request_spec.rb +71 -0
  206. data/spec/models/savings_calculator_request_spec.rb +99 -0
  207. data/spec/models/savings_deposit_schedule_spec.rb +63 -0
  208. data/spec/models/scenario_analysis_request_spec.rb +133 -0
  209. data/spec/models/sensitivity_analysis_request_spec.rb +133 -0
  210. data/spec/models/sensitivity_factor_spec.rb +59 -0
  211. data/spec/models/settings_spec.rb +79 -0
  212. data/spec/models/spending_analysis_request_spec.rb +187 -0
  213. data/spec/models/variable_annuity_request_spec.rb +209 -0
  214. data/spec/models/w_config1_spec.rb +65 -0
  215. data/spec/models/w_config_spec.rb +65 -0
  216. data/spec/spec_helper.rb +111 -0
  217. metadata +561 -0
@@ -0,0 +1,468 @@
1
+ =begin
2
+ #Hydrogen Proton API
3
+
4
+ #Financial engineering module of Hydrogen Atom
5
+
6
+ OpenAPI spec version: 1.9.1
7
+ Contact: info@hydrogenplatform.com
8
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
9
+ Swagger Codegen version: 2.4.19
10
+
11
+ =end
12
+
13
+ require 'date'
14
+
15
+ module ProtonApi
16
+ class AnnuityCalculatorInitialBalanceRequest
17
+ attr_accessor :inflation_rate
18
+
19
+ attr_accessor :decumulation_horizon
20
+
21
+ attr_accessor :account_ids
22
+
23
+ attr_accessor :tax_rate
24
+
25
+ attr_accessor :accumulation_horizon
26
+
27
+ attr_accessor :annuity_amount
28
+
29
+ attr_accessor :portfolio_return
30
+
31
+ attr_accessor :deposit_schedule
32
+
33
+ attr_accessor :annuity_frequency_interval
34
+
35
+ attr_accessor :initial_balance
36
+
37
+ attr_accessor :aggregation_account_ids
38
+
39
+ attr_accessor :create_log
40
+
41
+ class EnumAttributeValidator
42
+ attr_reader :datatype
43
+ attr_reader :allowable_values
44
+
45
+ def initialize(datatype, allowable_values)
46
+ @allowable_values = allowable_values.map do |value|
47
+ case datatype.to_s
48
+ when /Integer/i
49
+ value.to_i
50
+ when /Float/i
51
+ value.to_f
52
+ else
53
+ value
54
+ end
55
+ end
56
+ end
57
+
58
+ def valid?(value)
59
+ !value || allowable_values.include?(value)
60
+ end
61
+ end
62
+
63
+ # Attribute mapping from ruby-style variable name to JSON key.
64
+ def self.attribute_map
65
+ {
66
+ :'inflation_rate' => :'inflation_rate',
67
+ :'decumulation_horizon' => :'decumulation_horizon',
68
+ :'account_ids' => :'account_ids',
69
+ :'tax_rate' => :'tax_rate',
70
+ :'accumulation_horizon' => :'accumulation_horizon',
71
+ :'annuity_amount' => :'annuity_amount',
72
+ :'portfolio_return' => :'portfolio_return',
73
+ :'deposit_schedule' => :'deposit_schedule',
74
+ :'annuity_frequency_interval' => :'annuity_frequency_interval',
75
+ :'initial_balance' => :'initial_balance',
76
+ :'aggregation_account_ids' => :'aggregation_account_ids',
77
+ :'create_log' => :'create_log'
78
+ }
79
+ end
80
+
81
+ # Attribute type mapping.
82
+ def self.swagger_types
83
+ {
84
+ :'inflation_rate' => :'Float',
85
+ :'decumulation_horizon' => :'Integer',
86
+ :'account_ids' => :'Array<String>',
87
+ :'tax_rate' => :'Float',
88
+ :'accumulation_horizon' => :'Integer',
89
+ :'annuity_amount' => :'Float',
90
+ :'portfolio_return' => :'Float',
91
+ :'deposit_schedule' => :'AnnuityDepositSchedule',
92
+ :'annuity_frequency_interval' => :'String',
93
+ :'initial_balance' => :'Float',
94
+ :'aggregation_account_ids' => :'Array<String>',
95
+ :'create_log' => :'BOOLEAN'
96
+ }
97
+ end
98
+
99
+ # Initializes the object
100
+ # @param [Hash] attributes Model attributes in the form of hash
101
+ def initialize(attributes = {})
102
+ return unless attributes.is_a?(Hash)
103
+
104
+ # convert string to symbol for hash key
105
+ attributes = attributes.each_with_object({}) { |(k, v), h| h[k.to_sym] = v }
106
+
107
+ if attributes.has_key?(:'inflation_rate')
108
+ self.inflation_rate = attributes[:'inflation_rate']
109
+ else
110
+ self.inflation_rate = 0.0
111
+ end
112
+
113
+ if attributes.has_key?(:'decumulation_horizon')
114
+ self.decumulation_horizon = attributes[:'decumulation_horizon']
115
+ end
116
+
117
+ if attributes.has_key?(:'account_ids')
118
+ if (value = attributes[:'account_ids']).is_a?(Array)
119
+ self.account_ids = value
120
+ end
121
+ end
122
+
123
+ if attributes.has_key?(:'tax_rate')
124
+ self.tax_rate = attributes[:'tax_rate']
125
+ else
126
+ self.tax_rate = 0.0
127
+ end
128
+
129
+ if attributes.has_key?(:'accumulation_horizon')
130
+ self.accumulation_horizon = attributes[:'accumulation_horizon']
131
+ end
132
+
133
+ if attributes.has_key?(:'annuity_amount')
134
+ self.annuity_amount = attributes[:'annuity_amount']
135
+ end
136
+
137
+ if attributes.has_key?(:'portfolio_return')
138
+ self.portfolio_return = attributes[:'portfolio_return']
139
+ end
140
+
141
+ if attributes.has_key?(:'deposit_schedule')
142
+ self.deposit_schedule = attributes[:'deposit_schedule']
143
+ end
144
+
145
+ if attributes.has_key?(:'annuity_frequency_interval')
146
+ self.annuity_frequency_interval = attributes[:'annuity_frequency_interval']
147
+ else
148
+ self.annuity_frequency_interval = 'year'
149
+ end
150
+
151
+ if attributes.has_key?(:'initial_balance')
152
+ self.initial_balance = attributes[:'initial_balance']
153
+ else
154
+ self.initial_balance = 0.0
155
+ end
156
+
157
+ if attributes.has_key?(:'aggregation_account_ids')
158
+ if (value = attributes[:'aggregation_account_ids']).is_a?(Array)
159
+ self.aggregation_account_ids = value
160
+ end
161
+ end
162
+
163
+ if attributes.has_key?(:'create_log')
164
+ self.create_log = attributes[:'create_log']
165
+ else
166
+ self.create_log = false
167
+ end
168
+ end
169
+
170
+ # Show invalid properties with the reasons. Usually used together with valid?
171
+ # @return Array for valid properties with the reasons
172
+ def list_invalid_properties
173
+ invalid_properties = Array.new
174
+ if !@inflation_rate.nil? && @inflation_rate > 20
175
+ invalid_properties.push('invalid value for "inflation_rate", must be smaller than or equal to 20.')
176
+ end
177
+
178
+ if !@inflation_rate.nil? && @inflation_rate < -1
179
+ invalid_properties.push('invalid value for "inflation_rate", must be greater than or equal to -1.')
180
+ end
181
+
182
+ if @decumulation_horizon.nil?
183
+ invalid_properties.push('invalid value for "decumulation_horizon", decumulation_horizon cannot be nil.')
184
+ end
185
+
186
+ if @decumulation_horizon < 1
187
+ invalid_properties.push('invalid value for "decumulation_horizon", must be greater than or equal to 1.')
188
+ end
189
+
190
+ if !@tax_rate.nil? && @tax_rate > 1
191
+ invalid_properties.push('invalid value for "tax_rate", must be smaller than or equal to 1.')
192
+ end
193
+
194
+ if !@tax_rate.nil? && @tax_rate < 0
195
+ invalid_properties.push('invalid value for "tax_rate", must be greater than or equal to 0.')
196
+ end
197
+
198
+ if @accumulation_horizon.nil?
199
+ invalid_properties.push('invalid value for "accumulation_horizon", accumulation_horizon cannot be nil.')
200
+ end
201
+
202
+ if @accumulation_horizon < 0
203
+ invalid_properties.push('invalid value for "accumulation_horizon", must be greater than or equal to 0.')
204
+ end
205
+
206
+ if @annuity_amount.nil?
207
+ invalid_properties.push('invalid value for "annuity_amount", annuity_amount cannot be nil.')
208
+ end
209
+
210
+ if @annuity_amount < 0
211
+ invalid_properties.push('invalid value for "annuity_amount", must be greater than or equal to 0.')
212
+ end
213
+
214
+ if @portfolio_return.nil?
215
+ invalid_properties.push('invalid value for "portfolio_return", portfolio_return cannot be nil.')
216
+ end
217
+
218
+ if !@initial_balance.nil? && @initial_balance < 0
219
+ invalid_properties.push('invalid value for "initial_balance", must be greater than or equal to 0.')
220
+ end
221
+
222
+ invalid_properties
223
+ end
224
+
225
+ # Check to see if the all the properties in the model are valid
226
+ # @return true if the model is valid
227
+ def valid?
228
+ return false if !@inflation_rate.nil? && @inflation_rate > 20
229
+ return false if !@inflation_rate.nil? && @inflation_rate < -1
230
+ return false if @decumulation_horizon.nil?
231
+ return false if @decumulation_horizon < 1
232
+ return false if !@tax_rate.nil? && @tax_rate > 1
233
+ return false if !@tax_rate.nil? && @tax_rate < 0
234
+ return false if @accumulation_horizon.nil?
235
+ return false if @accumulation_horizon < 0
236
+ return false if @annuity_amount.nil?
237
+ return false if @annuity_amount < 0
238
+ return false if @portfolio_return.nil?
239
+ annuity_frequency_interval_validator = EnumAttributeValidator.new('String', ['year', 'quarter', 'month', 'week', 'day'])
240
+ return false unless annuity_frequency_interval_validator.valid?(@annuity_frequency_interval)
241
+ return false if !@initial_balance.nil? && @initial_balance < 0
242
+ true
243
+ end
244
+
245
+ # Custom attribute writer method with validation
246
+ # @param [Object] inflation_rate Value to be assigned
247
+ def inflation_rate=(inflation_rate)
248
+ if !inflation_rate.nil? && inflation_rate > 20
249
+ fail ArgumentError, 'invalid value for "inflation_rate", must be smaller than or equal to 20.'
250
+ end
251
+
252
+ if !inflation_rate.nil? && inflation_rate < -1
253
+ fail ArgumentError, 'invalid value for "inflation_rate", must be greater than or equal to -1.'
254
+ end
255
+
256
+ @inflation_rate = inflation_rate
257
+ end
258
+
259
+ # Custom attribute writer method with validation
260
+ # @param [Object] decumulation_horizon Value to be assigned
261
+ def decumulation_horizon=(decumulation_horizon)
262
+ if decumulation_horizon.nil?
263
+ fail ArgumentError, 'decumulation_horizon cannot be nil'
264
+ end
265
+
266
+ if decumulation_horizon < 1
267
+ fail ArgumentError, 'invalid value for "decumulation_horizon", must be greater than or equal to 1.'
268
+ end
269
+
270
+ @decumulation_horizon = decumulation_horizon
271
+ end
272
+
273
+ # Custom attribute writer method with validation
274
+ # @param [Object] tax_rate Value to be assigned
275
+ def tax_rate=(tax_rate)
276
+ if !tax_rate.nil? && tax_rate > 1
277
+ fail ArgumentError, 'invalid value for "tax_rate", must be smaller than or equal to 1.'
278
+ end
279
+
280
+ if !tax_rate.nil? && tax_rate < 0
281
+ fail ArgumentError, 'invalid value for "tax_rate", must be greater than or equal to 0.'
282
+ end
283
+
284
+ @tax_rate = tax_rate
285
+ end
286
+
287
+ # Custom attribute writer method with validation
288
+ # @param [Object] accumulation_horizon Value to be assigned
289
+ def accumulation_horizon=(accumulation_horizon)
290
+ if accumulation_horizon.nil?
291
+ fail ArgumentError, 'accumulation_horizon cannot be nil'
292
+ end
293
+
294
+ if accumulation_horizon < 0
295
+ fail ArgumentError, 'invalid value for "accumulation_horizon", must be greater than or equal to 0.'
296
+ end
297
+
298
+ @accumulation_horizon = accumulation_horizon
299
+ end
300
+
301
+ # Custom attribute writer method with validation
302
+ # @param [Object] annuity_amount Value to be assigned
303
+ def annuity_amount=(annuity_amount)
304
+ if annuity_amount.nil?
305
+ fail ArgumentError, 'annuity_amount cannot be nil'
306
+ end
307
+
308
+ if annuity_amount < 0
309
+ fail ArgumentError, 'invalid value for "annuity_amount", must be greater than or equal to 0.'
310
+ end
311
+
312
+ @annuity_amount = annuity_amount
313
+ end
314
+
315
+ # Custom attribute writer method checking allowed values (enum).
316
+ # @param [Object] annuity_frequency_interval Object to be assigned
317
+ def annuity_frequency_interval=(annuity_frequency_interval)
318
+ validator = EnumAttributeValidator.new('String', ['year', 'quarter', 'month', 'week', 'day'])
319
+ unless validator.valid?(annuity_frequency_interval)
320
+ fail ArgumentError, 'invalid value for "annuity_frequency_interval", must be one of #{validator.allowable_values}.'
321
+ end
322
+ @annuity_frequency_interval = annuity_frequency_interval
323
+ end
324
+
325
+ # Custom attribute writer method with validation
326
+ # @param [Object] initial_balance Value to be assigned
327
+ def initial_balance=(initial_balance)
328
+ if !initial_balance.nil? && initial_balance < 0
329
+ fail ArgumentError, 'invalid value for "initial_balance", must be greater than or equal to 0.'
330
+ end
331
+
332
+ @initial_balance = initial_balance
333
+ end
334
+
335
+ # Checks equality by comparing each attribute.
336
+ # @param [Object] Object to be compared
337
+ def ==(o)
338
+ return true if self.equal?(o)
339
+ self.class == o.class &&
340
+ inflation_rate == o.inflation_rate &&
341
+ decumulation_horizon == o.decumulation_horizon &&
342
+ account_ids == o.account_ids &&
343
+ tax_rate == o.tax_rate &&
344
+ accumulation_horizon == o.accumulation_horizon &&
345
+ annuity_amount == o.annuity_amount &&
346
+ portfolio_return == o.portfolio_return &&
347
+ deposit_schedule == o.deposit_schedule &&
348
+ annuity_frequency_interval == o.annuity_frequency_interval &&
349
+ initial_balance == o.initial_balance &&
350
+ aggregation_account_ids == o.aggregation_account_ids &&
351
+ create_log == o.create_log
352
+ end
353
+
354
+ # @see the `==` method
355
+ # @param [Object] Object to be compared
356
+ def eql?(o)
357
+ self == o
358
+ end
359
+
360
+ # Calculates hash code according to all attributes.
361
+ # @return [Fixnum] Hash code
362
+ def hash
363
+ [inflation_rate, decumulation_horizon, account_ids, tax_rate, accumulation_horizon, annuity_amount, portfolio_return, deposit_schedule, annuity_frequency_interval, initial_balance, aggregation_account_ids, create_log].hash
364
+ end
365
+
366
+ # Builds the object from hash
367
+ # @param [Hash] attributes Model attributes in the form of hash
368
+ # @return [Object] Returns the model itself
369
+ def build_from_hash(attributes)
370
+ return nil unless attributes.is_a?(Hash)
371
+ self.class.swagger_types.each_pair do |key, type|
372
+ if type =~ /\AArray<(.*)>/i
373
+ # check to ensure the input is an array given that the attribute
374
+ # is documented as an array but the input is not
375
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
376
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
377
+ end
378
+ elsif !attributes[self.class.attribute_map[key]].nil?
379
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
380
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
381
+ end
382
+
383
+ self
384
+ end
385
+ # Deserializes the data based on type
386
+ # @param string type Data type
387
+ # @param string value Value to be deserialized
388
+ # @return [Object] Deserialized data
389
+ def _deserialize(type, value)
390
+ case type.to_sym
391
+ when :DateTime
392
+ value
393
+ when :Date
394
+ value
395
+ when :String
396
+ value.to_s
397
+ when :Integer
398
+ value.to_i
399
+ when :Float
400
+ value.to_f
401
+ when :BOOLEAN
402
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
403
+ true
404
+ else
405
+ false
406
+ end
407
+ when :Object
408
+ # generic object (usually a Hash), return directly
409
+ value
410
+ when /\AArray<(?<inner_type>.+)>\z/
411
+ inner_type = Regexp.last_match[:inner_type]
412
+ value.map { |v| _deserialize(inner_type, v) }
413
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
414
+ k_type = Regexp.last_match[:k_type]
415
+ v_type = Regexp.last_match[:v_type]
416
+ {}.tap do |hash|
417
+ value.each do |k, v|
418
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
419
+ end
420
+ end
421
+ else # model
422
+ temp_model = ProtonApi.const_get(type).new
423
+ temp_model.build_from_hash(value)
424
+ end
425
+ end
426
+ # Returns the string representation of the object
427
+ # @return [String] String presentation of the object
428
+ def to_s
429
+ to_hash.to_s
430
+ end
431
+
432
+ # to_body is an alias to to_hash (backward compatibility)
433
+ # @return [Hash] Returns the object in the form of hash
434
+ def to_body
435
+ to_hash
436
+ end
437
+
438
+ # Returns the object in the form of hash
439
+ # @return [Hash] Returns the object in the form of hash
440
+ def to_hash
441
+ hash = {}
442
+ self.class.attribute_map.each_pair do |attr, param|
443
+ value = self.send(attr)
444
+ next if value.nil?
445
+ hash[param] = _to_hash(value)
446
+ end
447
+ hash
448
+ end
449
+ # Outputs non-array value in the form of hash
450
+ # For object, use to_hash. Otherwise, just return the value
451
+ # @param [Object] value Any valid value
452
+ # @return [Hash] Returns the value in the form of hash
453
+ def _to_hash(value)
454
+ if value.is_a?(Array)
455
+ value.compact.map { |v| _to_hash(v) }
456
+ elsif value.is_a?(Hash)
457
+ {}.tap do |hash|
458
+ value.each { |k, v| hash[k] = _to_hash(v) }
459
+ end
460
+ elsif value.respond_to? :to_hash
461
+ value.to_hash
462
+ else
463
+ value
464
+ end
465
+ end
466
+
467
+ end
468
+ end