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,474 @@
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 RetirementCalculatorPercentCoveredRequest
17
+ attr_accessor :retirement_savings
18
+
19
+ attr_accessor :current_age
20
+
21
+ attr_accessor :account_ids
22
+
23
+ attr_accessor :retirement_income
24
+
25
+ attr_accessor :retirement_tax
26
+
27
+ attr_accessor :death_age
28
+
29
+ attr_accessor :retirement_age
30
+
31
+ attr_accessor :portfolio_return
32
+
33
+ attr_accessor :retirement_expenses
34
+
35
+ attr_accessor :deposit_schedule
36
+
37
+ attr_accessor :inflation_rate
38
+
39
+ attr_accessor :aggregation_account_ids
40
+
41
+ # Attribute mapping from ruby-style variable name to JSON key.
42
+ def self.attribute_map
43
+ {
44
+ :'retirement_savings' => :'retirement_savings',
45
+ :'current_age' => :'current_age',
46
+ :'account_ids' => :'account_ids',
47
+ :'retirement_income' => :'retirement_income',
48
+ :'retirement_tax' => :'retirement_tax',
49
+ :'death_age' => :'death_age',
50
+ :'retirement_age' => :'retirement_age',
51
+ :'portfolio_return' => :'portfolio_return',
52
+ :'retirement_expenses' => :'retirement_expenses',
53
+ :'deposit_schedule' => :'deposit_schedule',
54
+ :'inflation_rate' => :'inflation_rate',
55
+ :'aggregation_account_ids' => :'aggregation_account_ids'
56
+ }
57
+ end
58
+
59
+ # Attribute type mapping.
60
+ def self.swagger_types
61
+ {
62
+ :'retirement_savings' => :'Float',
63
+ :'current_age' => :'Integer',
64
+ :'account_ids' => :'Array<String>',
65
+ :'retirement_income' => :'Float',
66
+ :'retirement_tax' => :'Float',
67
+ :'death_age' => :'Integer',
68
+ :'retirement_age' => :'Integer',
69
+ :'portfolio_return' => :'Float',
70
+ :'retirement_expenses' => :'Float',
71
+ :'deposit_schedule' => :'CalculatorDepositSchedule1',
72
+ :'inflation_rate' => :'Float',
73
+ :'aggregation_account_ids' => :'Array<String>'
74
+ }
75
+ end
76
+
77
+ # Initializes the object
78
+ # @param [Hash] attributes Model attributes in the form of hash
79
+ def initialize(attributes = {})
80
+ return unless attributes.is_a?(Hash)
81
+
82
+ # convert string to symbol for hash key
83
+ attributes = attributes.each_with_object({}) { |(k, v), h| h[k.to_sym] = v }
84
+
85
+ if attributes.has_key?(:'retirement_savings')
86
+ self.retirement_savings = attributes[:'retirement_savings']
87
+ else
88
+ self.retirement_savings = 0.0
89
+ end
90
+
91
+ if attributes.has_key?(:'current_age')
92
+ self.current_age = attributes[:'current_age']
93
+ end
94
+
95
+ if attributes.has_key?(:'account_ids')
96
+ if (value = attributes[:'account_ids']).is_a?(Array)
97
+ self.account_ids = value
98
+ end
99
+ end
100
+
101
+ if attributes.has_key?(:'retirement_income')
102
+ self.retirement_income = attributes[:'retirement_income']
103
+ else
104
+ self.retirement_income = 0.0
105
+ end
106
+
107
+ if attributes.has_key?(:'retirement_tax')
108
+ self.retirement_tax = attributes[:'retirement_tax']
109
+ else
110
+ self.retirement_tax = 0.0
111
+ end
112
+
113
+ if attributes.has_key?(:'death_age')
114
+ self.death_age = attributes[:'death_age']
115
+ end
116
+
117
+ if attributes.has_key?(:'retirement_age')
118
+ self.retirement_age = attributes[:'retirement_age']
119
+ else
120
+ self.retirement_age = 65
121
+ end
122
+
123
+ if attributes.has_key?(:'portfolio_return')
124
+ self.portfolio_return = attributes[:'portfolio_return']
125
+ end
126
+
127
+ if attributes.has_key?(:'retirement_expenses')
128
+ self.retirement_expenses = attributes[:'retirement_expenses']
129
+ end
130
+
131
+ if attributes.has_key?(:'deposit_schedule')
132
+ self.deposit_schedule = attributes[:'deposit_schedule']
133
+ end
134
+
135
+ if attributes.has_key?(:'inflation_rate')
136
+ self.inflation_rate = attributes[:'inflation_rate']
137
+ else
138
+ self.inflation_rate = 0.0
139
+ end
140
+
141
+ if attributes.has_key?(:'aggregation_account_ids')
142
+ if (value = attributes[:'aggregation_account_ids']).is_a?(Array)
143
+ self.aggregation_account_ids = value
144
+ end
145
+ end
146
+ end
147
+
148
+ # Show invalid properties with the reasons. Usually used together with valid?
149
+ # @return Array for valid properties with the reasons
150
+ def list_invalid_properties
151
+ invalid_properties = Array.new
152
+ if !@retirement_savings.nil? && @retirement_savings < 0
153
+ invalid_properties.push('invalid value for "retirement_savings", must be greater than or equal to 0.')
154
+ end
155
+
156
+ if @current_age.nil?
157
+ invalid_properties.push('invalid value for "current_age", current_age cannot be nil.')
158
+ end
159
+
160
+ if @current_age < 0
161
+ invalid_properties.push('invalid value for "current_age", must be greater than or equal to 0.')
162
+ end
163
+
164
+ if !@retirement_income.nil? && @retirement_income < 0
165
+ invalid_properties.push('invalid value for "retirement_income", must be greater than or equal to 0.')
166
+ end
167
+
168
+ if !@retirement_tax.nil? && @retirement_tax > 1
169
+ invalid_properties.push('invalid value for "retirement_tax", must be smaller than or equal to 1.')
170
+ end
171
+
172
+ if !@retirement_tax.nil? && @retirement_tax < 0
173
+ invalid_properties.push('invalid value for "retirement_tax", must be greater than or equal to 0.')
174
+ end
175
+
176
+ if @death_age.nil?
177
+ invalid_properties.push('invalid value for "death_age", death_age cannot be nil.')
178
+ end
179
+
180
+ if @death_age < 0
181
+ invalid_properties.push('invalid value for "death_age", must be greater than or equal to 0.')
182
+ end
183
+
184
+ if !@retirement_age.nil? && @retirement_age < 0
185
+ invalid_properties.push('invalid value for "retirement_age", must be greater than or equal to 0.')
186
+ end
187
+
188
+ if @portfolio_return.nil?
189
+ invalid_properties.push('invalid value for "portfolio_return", portfolio_return cannot be nil.')
190
+ end
191
+
192
+ if @portfolio_return < -1
193
+ invalid_properties.push('invalid value for "portfolio_return", must be greater than or equal to -1.')
194
+ end
195
+
196
+ if @retirement_expenses.nil?
197
+ invalid_properties.push('invalid value for "retirement_expenses", retirement_expenses cannot be nil.')
198
+ end
199
+
200
+ if @retirement_expenses < 0
201
+ invalid_properties.push('invalid value for "retirement_expenses", must be greater than or equal to 0.')
202
+ end
203
+
204
+ if !@inflation_rate.nil? && @inflation_rate < -1
205
+ invalid_properties.push('invalid value for "inflation_rate", must be greater than or equal to -1.')
206
+ end
207
+
208
+ invalid_properties
209
+ end
210
+
211
+ # Check to see if the all the properties in the model are valid
212
+ # @return true if the model is valid
213
+ def valid?
214
+ return false if !@retirement_savings.nil? && @retirement_savings < 0
215
+ return false if @current_age.nil?
216
+ return false if @current_age < 0
217
+ return false if !@retirement_income.nil? && @retirement_income < 0
218
+ return false if !@retirement_tax.nil? && @retirement_tax > 1
219
+ return false if !@retirement_tax.nil? && @retirement_tax < 0
220
+ return false if @death_age.nil?
221
+ return false if @death_age < 0
222
+ return false if !@retirement_age.nil? && @retirement_age < 0
223
+ return false if @portfolio_return.nil?
224
+ return false if @portfolio_return < -1
225
+ return false if @retirement_expenses.nil?
226
+ return false if @retirement_expenses < 0
227
+ return false if !@inflation_rate.nil? && @inflation_rate < -1
228
+ true
229
+ end
230
+
231
+ # Custom attribute writer method with validation
232
+ # @param [Object] retirement_savings Value to be assigned
233
+ def retirement_savings=(retirement_savings)
234
+ if !retirement_savings.nil? && retirement_savings < 0
235
+ fail ArgumentError, 'invalid value for "retirement_savings", must be greater than or equal to 0.'
236
+ end
237
+
238
+ @retirement_savings = retirement_savings
239
+ end
240
+
241
+ # Custom attribute writer method with validation
242
+ # @param [Object] current_age Value to be assigned
243
+ def current_age=(current_age)
244
+ if current_age.nil?
245
+ fail ArgumentError, 'current_age cannot be nil'
246
+ end
247
+
248
+ if current_age < 0
249
+ fail ArgumentError, 'invalid value for "current_age", must be greater than or equal to 0.'
250
+ end
251
+
252
+ @current_age = current_age
253
+ end
254
+
255
+ # Custom attribute writer method with validation
256
+ # @param [Object] retirement_income Value to be assigned
257
+ def retirement_income=(retirement_income)
258
+ if !retirement_income.nil? && retirement_income < 0
259
+ fail ArgumentError, 'invalid value for "retirement_income", must be greater than or equal to 0.'
260
+ end
261
+
262
+ @retirement_income = retirement_income
263
+ end
264
+
265
+ # Custom attribute writer method with validation
266
+ # @param [Object] retirement_tax Value to be assigned
267
+ def retirement_tax=(retirement_tax)
268
+ if !retirement_tax.nil? && retirement_tax > 1
269
+ fail ArgumentError, 'invalid value for "retirement_tax", must be smaller than or equal to 1.'
270
+ end
271
+
272
+ if !retirement_tax.nil? && retirement_tax < 0
273
+ fail ArgumentError, 'invalid value for "retirement_tax", must be greater than or equal to 0.'
274
+ end
275
+
276
+ @retirement_tax = retirement_tax
277
+ end
278
+
279
+ # Custom attribute writer method with validation
280
+ # @param [Object] death_age Value to be assigned
281
+ def death_age=(death_age)
282
+ if death_age.nil?
283
+ fail ArgumentError, 'death_age cannot be nil'
284
+ end
285
+
286
+ if death_age < 0
287
+ fail ArgumentError, 'invalid value for "death_age", must be greater than or equal to 0.'
288
+ end
289
+
290
+ @death_age = death_age
291
+ end
292
+
293
+ # Custom attribute writer method with validation
294
+ # @param [Object] retirement_age Value to be assigned
295
+ def retirement_age=(retirement_age)
296
+ if !retirement_age.nil? && retirement_age < 0
297
+ fail ArgumentError, 'invalid value for "retirement_age", must be greater than or equal to 0.'
298
+ end
299
+
300
+ @retirement_age = retirement_age
301
+ end
302
+
303
+ # Custom attribute writer method with validation
304
+ # @param [Object] portfolio_return Value to be assigned
305
+ def portfolio_return=(portfolio_return)
306
+ if portfolio_return.nil?
307
+ fail ArgumentError, 'portfolio_return cannot be nil'
308
+ end
309
+
310
+ if portfolio_return < -1
311
+ fail ArgumentError, 'invalid value for "portfolio_return", must be greater than or equal to -1.'
312
+ end
313
+
314
+ @portfolio_return = portfolio_return
315
+ end
316
+
317
+ # Custom attribute writer method with validation
318
+ # @param [Object] retirement_expenses Value to be assigned
319
+ def retirement_expenses=(retirement_expenses)
320
+ if retirement_expenses.nil?
321
+ fail ArgumentError, 'retirement_expenses cannot be nil'
322
+ end
323
+
324
+ if retirement_expenses < 0
325
+ fail ArgumentError, 'invalid value for "retirement_expenses", must be greater than or equal to 0.'
326
+ end
327
+
328
+ @retirement_expenses = retirement_expenses
329
+ end
330
+
331
+ # Custom attribute writer method with validation
332
+ # @param [Object] inflation_rate Value to be assigned
333
+ def inflation_rate=(inflation_rate)
334
+ if !inflation_rate.nil? && inflation_rate < -1
335
+ fail ArgumentError, 'invalid value for "inflation_rate", must be greater than or equal to -1.'
336
+ end
337
+
338
+ @inflation_rate = inflation_rate
339
+ end
340
+
341
+ # Checks equality by comparing each attribute.
342
+ # @param [Object] Object to be compared
343
+ def ==(o)
344
+ return true if self.equal?(o)
345
+ self.class == o.class &&
346
+ retirement_savings == o.retirement_savings &&
347
+ current_age == o.current_age &&
348
+ account_ids == o.account_ids &&
349
+ retirement_income == o.retirement_income &&
350
+ retirement_tax == o.retirement_tax &&
351
+ death_age == o.death_age &&
352
+ retirement_age == o.retirement_age &&
353
+ portfolio_return == o.portfolio_return &&
354
+ retirement_expenses == o.retirement_expenses &&
355
+ deposit_schedule == o.deposit_schedule &&
356
+ inflation_rate == o.inflation_rate &&
357
+ aggregation_account_ids == o.aggregation_account_ids
358
+ end
359
+
360
+ # @see the `==` method
361
+ # @param [Object] Object to be compared
362
+ def eql?(o)
363
+ self == o
364
+ end
365
+
366
+ # Calculates hash code according to all attributes.
367
+ # @return [Fixnum] Hash code
368
+ def hash
369
+ [retirement_savings, current_age, account_ids, retirement_income, retirement_tax, death_age, retirement_age, portfolio_return, retirement_expenses, deposit_schedule, inflation_rate, aggregation_account_ids].hash
370
+ end
371
+
372
+ # Builds the object from hash
373
+ # @param [Hash] attributes Model attributes in the form of hash
374
+ # @return [Object] Returns the model itself
375
+ def build_from_hash(attributes)
376
+ return nil unless attributes.is_a?(Hash)
377
+ self.class.swagger_types.each_pair do |key, type|
378
+ if type =~ /\AArray<(.*)>/i
379
+ # check to ensure the input is an array given that the attribute
380
+ # is documented as an array but the input is not
381
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
382
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
383
+ end
384
+ elsif !attributes[self.class.attribute_map[key]].nil?
385
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
386
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
387
+ end
388
+
389
+ self
390
+ end
391
+ # Deserializes the data based on type
392
+ # @param string type Data type
393
+ # @param string value Value to be deserialized
394
+ # @return [Object] Deserialized data
395
+ def _deserialize(type, value)
396
+ case type.to_sym
397
+ when :DateTime
398
+ value
399
+ when :Date
400
+ value
401
+ when :String
402
+ value.to_s
403
+ when :Integer
404
+ value.to_i
405
+ when :Float
406
+ value.to_f
407
+ when :BOOLEAN
408
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
409
+ true
410
+ else
411
+ false
412
+ end
413
+ when :Object
414
+ # generic object (usually a Hash), return directly
415
+ value
416
+ when /\AArray<(?<inner_type>.+)>\z/
417
+ inner_type = Regexp.last_match[:inner_type]
418
+ value.map { |v| _deserialize(inner_type, v) }
419
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
420
+ k_type = Regexp.last_match[:k_type]
421
+ v_type = Regexp.last_match[:v_type]
422
+ {}.tap do |hash|
423
+ value.each do |k, v|
424
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
425
+ end
426
+ end
427
+ else # model
428
+ temp_model = ProtonApi.const_get(type).new
429
+ temp_model.build_from_hash(value)
430
+ end
431
+ end
432
+ # Returns the string representation of the object
433
+ # @return [String] String presentation of the object
434
+ def to_s
435
+ to_hash.to_s
436
+ end
437
+
438
+ # to_body is an alias to to_hash (backward compatibility)
439
+ # @return [Hash] Returns the object in the form of hash
440
+ def to_body
441
+ to_hash
442
+ end
443
+
444
+ # Returns the object in the form of hash
445
+ # @return [Hash] Returns the object in the form of hash
446
+ def to_hash
447
+ hash = {}
448
+ self.class.attribute_map.each_pair do |attr, param|
449
+ value = self.send(attr)
450
+ next if value.nil?
451
+ hash[param] = _to_hash(value)
452
+ end
453
+ hash
454
+ end
455
+ # Outputs non-array value in the form of hash
456
+ # For object, use to_hash. Otherwise, just return the value
457
+ # @param [Object] value Any valid value
458
+ # @return [Hash] Returns the value in the form of hash
459
+ def _to_hash(value)
460
+ if value.is_a?(Array)
461
+ value.compact.map { |v| _to_hash(v) }
462
+ elsif value.is_a?(Hash)
463
+ {}.tap do |hash|
464
+ value.each { |k, v| hash[k] = _to_hash(v) }
465
+ end
466
+ elsif value.respond_to? :to_hash
467
+ value.to_hash
468
+ else
469
+ value
470
+ end
471
+ end
472
+
473
+ end
474
+ end