xero-ruby 3.4.0 → 3.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (91) hide show
  1. checksums.yaml +4 -4
  2. data/lib/xero-ruby/api/finance_api.rb +866 -0
  3. data/lib/xero-ruby/api_client.rb +11 -0
  4. data/lib/xero-ruby/configuration.rb +2 -0
  5. data/lib/xero-ruby/models/accounting/contact.rb +86 -1
  6. data/lib/xero-ruby/models/finance/account_usage.rb +342 -0
  7. data/lib/xero-ruby/models/finance/account_usage_response.rb +254 -0
  8. data/lib/xero-ruby/models/finance/balance_sheet_account_detail.rb +262 -0
  9. data/lib/xero-ruby/models/finance/balance_sheet_account_group.rb +234 -0
  10. data/lib/xero-ruby/models/finance/balance_sheet_account_type.rb +244 -0
  11. data/lib/xero-ruby/models/finance/balance_sheet_response.rb +252 -0
  12. data/lib/xero-ruby/models/finance/bank_statement_response.rb +232 -0
  13. data/lib/xero-ruby/models/finance/cash_account_response.rb +262 -0
  14. data/lib/xero-ruby/models/finance/cash_balance.rb +242 -0
  15. data/lib/xero-ruby/models/finance/cash_validation_response.rb +262 -0
  16. data/lib/xero-ruby/models/finance/cashflow_account.rb +282 -0
  17. data/lib/xero-ruby/models/finance/cashflow_activity.rb +244 -0
  18. data/lib/xero-ruby/models/finance/cashflow_response.rb +254 -0
  19. data/lib/xero-ruby/models/finance/cashflow_type.rb +244 -0
  20. data/lib/xero-ruby/models/finance/contact_detail.rb +274 -0
  21. data/lib/xero-ruby/models/finance/contact_total_detail.rb +242 -0
  22. data/lib/xero-ruby/models/finance/contact_total_other.rb +252 -0
  23. data/lib/xero-ruby/models/finance/current_statement_response.rb +272 -0
  24. data/lib/xero-ruby/models/finance/data_source_response.rb +362 -0
  25. data/lib/xero-ruby/models/finance/history_record_response.rb +262 -0
  26. data/lib/xero-ruby/models/finance/income_by_contact_response.rb +284 -0
  27. data/lib/xero-ruby/models/finance/lock_history_model.rb +242 -0
  28. data/lib/xero-ruby/models/finance/lock_history_response.rb +244 -0
  29. data/lib/xero-ruby/models/finance/manual_journal_total.rb +222 -0
  30. data/lib/xero-ruby/models/finance/pnl_account.rb +272 -0
  31. data/lib/xero-ruby/models/finance/pnl_account_class.rb +234 -0
  32. data/lib/xero-ruby/models/finance/pnl_account_type.rb +244 -0
  33. data/lib/xero-ruby/models/finance/practice_response.rb +262 -0
  34. data/lib/xero-ruby/models/finance/problem.rb +252 -0
  35. data/lib/xero-ruby/models/finance/problem_type.rb +39 -0
  36. data/lib/xero-ruby/models/finance/profit_and_loss_response.rb +262 -0
  37. data/lib/xero-ruby/models/finance/report_history_model.rb +242 -0
  38. data/lib/xero-ruby/models/finance/report_history_response.rb +244 -0
  39. data/lib/xero-ruby/models/finance/statement_balance_response.rb +232 -0
  40. data/lib/xero-ruby/models/finance/statement_lines_response.rb +382 -0
  41. data/lib/xero-ruby/models/finance/total_detail.rb +242 -0
  42. data/lib/xero-ruby/models/finance/total_other.rb +242 -0
  43. data/lib/xero-ruby/models/finance/trial_balance_account.rb +312 -0
  44. data/lib/xero-ruby/models/finance/trial_balance_entry.rb +232 -0
  45. data/lib/xero-ruby/models/finance/trial_balance_movement.rb +252 -0
  46. data/lib/xero-ruby/models/finance/trial_balance_response.rb +244 -0
  47. data/lib/xero-ruby/models/finance/user_activities_response.rb +244 -0
  48. data/lib/xero-ruby/models/finance/user_response.rb +336 -0
  49. data/lib/xero-ruby/version.rb +6 -6
  50. data/lib/xero-ruby.rb +44 -0
  51. data/spec/api_client_spec.rb +3 -0
  52. data/spec/app_store/api/app_store_api_spec.rb +1 -1
  53. data/spec/configuration_spec.rb +1 -0
  54. data/spec/finance/api/finance_api_spec.rb +156 -0
  55. data/spec/finance/models/account_usage_response_spec.rb +58 -0
  56. data/spec/finance/models/account_usage_spec.rb +112 -0
  57. data/spec/finance/models/balance_sheet_account_detail_spec.rb +64 -0
  58. data/spec/finance/models/balance_sheet_account_group_spec.rb +46 -0
  59. data/spec/finance/models/balance_sheet_account_type_spec.rb +52 -0
  60. data/spec/finance/models/balance_sheet_response_spec.rb +58 -0
  61. data/spec/finance/models/bank_statement_response_spec.rb +46 -0
  62. data/spec/finance/models/cash_account_response_spec.rb +64 -0
  63. data/spec/finance/models/cash_balance_spec.rb +52 -0
  64. data/spec/finance/models/cash_validation_response_spec.rb +64 -0
  65. data/spec/finance/models/cashflow_account_spec.rb +76 -0
  66. data/spec/finance/models/cashflow_activity_spec.rb +52 -0
  67. data/spec/finance/models/cashflow_response_spec.rb +58 -0
  68. data/spec/finance/models/cashflow_type_spec.rb +52 -0
  69. data/spec/finance/models/current_statement_response_spec.rb +70 -0
  70. data/spec/finance/models/data_source_response_spec.rb +124 -0
  71. data/spec/finance/models/history_record_response_spec.rb +64 -0
  72. data/spec/finance/models/lock_history_model_spec.rb +52 -0
  73. data/spec/finance/models/lock_history_response_spec.rb +52 -0
  74. data/spec/finance/models/pnl_account_class_spec.rb +46 -0
  75. data/spec/finance/models/pnl_account_spec.rb +70 -0
  76. data/spec/finance/models/pnl_account_type_spec.rb +52 -0
  77. data/spec/finance/models/practice_response_spec.rb +64 -0
  78. data/spec/finance/models/problem_spec.rb +58 -0
  79. data/spec/finance/models/problem_type_spec.rb +34 -0
  80. data/spec/finance/models/profit_and_loss_response_spec.rb +64 -0
  81. data/spec/finance/models/report_history_model_spec.rb +52 -0
  82. data/spec/finance/models/report_history_response_spec.rb +52 -0
  83. data/spec/finance/models/statement_balance_response_spec.rb +46 -0
  84. data/spec/finance/models/statement_lines_response_spec.rb +136 -0
  85. data/spec/finance/models/trial_balance_account_spec.rb +94 -0
  86. data/spec/finance/models/trial_balance_entry_spec.rb +46 -0
  87. data/spec/finance/models/trial_balance_movement_spec.rb +58 -0
  88. data/spec/finance/models/trial_balance_response_spec.rb +52 -0
  89. data/spec/finance/models/user_activities_response_spec.rb +52 -0
  90. data/spec/finance/models/user_response_spec.rb +106 -0
  91. metadata +120 -2
@@ -0,0 +1,262 @@
1
+ =begin
2
+ #Xero Finance API
3
+
4
+ #The Finance API is a collection of endpoints which customers can use in the course of a loan application, which may assist lenders to gain the confidence they need to provide capital.
5
+
6
+ Contact: api@xero.com
7
+ Generated by: https://openapi-generator.tech
8
+ OpenAPI Generator version: 4.3.1
9
+
10
+ =end
11
+
12
+ require 'time'
13
+ require 'date'
14
+
15
+ module XeroRuby::Finance
16
+ require 'bigdecimal'
17
+
18
+ class HistoryRecordResponse
19
+ # The type of change recorded against the document
20
+ attr_accessor :changes
21
+
22
+ # UTC date that the history record was created
23
+ attr_accessor :date_utc_string
24
+
25
+ # UTC date that the history record was created
26
+ attr_accessor :date_utc
27
+
28
+ # The users first and last name
29
+ attr_accessor :user
30
+
31
+ # Description of the change event or transaction
32
+ attr_accessor :details
33
+
34
+ # Attribute mapping from ruby-style variable name to JSON key.
35
+ def self.attribute_map
36
+ {
37
+ :'changes' => :'changes',
38
+ :'date_utc_string' => :'dateUTCString',
39
+ :'date_utc' => :'dateUTC',
40
+ :'user' => :'user',
41
+ :'details' => :'details'
42
+ }
43
+ end
44
+
45
+ # Attribute type mapping.
46
+ def self.openapi_types
47
+ {
48
+ :'changes' => :'String',
49
+ :'date_utc_string' => :'String',
50
+ :'date_utc' => :'DateTime',
51
+ :'user' => :'String',
52
+ :'details' => :'String'
53
+ }
54
+ end
55
+
56
+ # Initializes the object
57
+ # @param [Hash] attributes Model attributes in the form of hash
58
+ def initialize(attributes = {})
59
+ if (!attributes.is_a?(Hash))
60
+ fail ArgumentError, "The input argument (attributes) must be a hash in `XeroRuby::Finance::HistoryRecordResponse` initialize method"
61
+ end
62
+
63
+ # check to see if the attribute exists and convert string to symbol for hash key
64
+ attributes = attributes.each_with_object({}) { |(k, v), h|
65
+ if (!self.class.attribute_map.key?(k.to_sym))
66
+ fail ArgumentError, "`#{k}` is not a valid attribute in `XeroRuby::Finance::HistoryRecordResponse`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
67
+ end
68
+ h[k.to_sym] = v
69
+ }
70
+
71
+ if attributes.key?(:'changes')
72
+ self.changes = attributes[:'changes']
73
+ end
74
+
75
+ if attributes.key?(:'date_utc_string')
76
+ self.date_utc_string = attributes[:'date_utc_string']
77
+ end
78
+
79
+ if attributes.key?(:'date_utc')
80
+ self.date_utc = attributes[:'date_utc']
81
+ end
82
+
83
+ if attributes.key?(:'user')
84
+ self.user = attributes[:'user']
85
+ end
86
+
87
+ if attributes.key?(:'details')
88
+ self.details = attributes[:'details']
89
+ end
90
+ end
91
+
92
+ # Show invalid properties with the reasons. Usually used together with valid?
93
+ # @return Array for valid properties with the reasons
94
+ def list_invalid_properties
95
+ invalid_properties = Array.new
96
+ invalid_properties
97
+ end
98
+
99
+ # Check to see if the all the properties in the model are valid
100
+ # @return true if the model is valid
101
+ def valid?
102
+ true
103
+ end
104
+
105
+ # Checks equality by comparing each attribute.
106
+ # @param [Object] Object to be compared
107
+ def ==(o)
108
+ return true if self.equal?(o)
109
+ self.class == o.class &&
110
+ changes == o.changes &&
111
+ date_utc_string == o.date_utc_string &&
112
+ date_utc == o.date_utc &&
113
+ user == o.user &&
114
+ details == o.details
115
+ end
116
+
117
+ # @see the `==` method
118
+ # @param [Object] Object to be compared
119
+ def eql?(o)
120
+ self == o
121
+ end
122
+
123
+ # Calculates hash code according to all attributes.
124
+ # @return [Integer] Hash code
125
+ def hash
126
+ [changes, date_utc_string, date_utc, user, details].hash
127
+ end
128
+
129
+ # Builds the object from hash
130
+ # @param [Hash] attributes Model attributes in the form of hash
131
+ # @return [Object] Returns the model itself
132
+ def self.build_from_hash(attributes)
133
+ new.build_from_hash(attributes)
134
+ end
135
+
136
+ # Builds the object from hash
137
+ # @param [Hash] attributes Model attributes in the form of hash
138
+ # @return [Object] Returns the model itself
139
+ def build_from_hash(attributes)
140
+ return nil unless attributes.is_a?(Hash)
141
+ self.class.openapi_types.each_pair do |key, type|
142
+ if type =~ /\AArray<(.*)>/i
143
+ # check to ensure the input is an array given that the attribute
144
+ # is documented as an array but the input is not
145
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
146
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
147
+ end
148
+ elsif !attributes[self.class.attribute_map[key]].nil?
149
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
150
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
151
+ end
152
+
153
+ self
154
+ end
155
+
156
+ # Deserializes the data based on type
157
+ # @param string type Data type
158
+ # @param string value Value to be deserialized
159
+ # @return [Object] Deserialized data
160
+ def _deserialize(type, value)
161
+ case type.to_sym
162
+ when :DateTime
163
+ DateTime.parse(parse_date(value))
164
+ when :Date
165
+ Date.parse(parse_date(value))
166
+ when :String
167
+ value.to_s
168
+ when :Integer
169
+ value.to_i
170
+ when :Float
171
+ value.to_f
172
+ when :BigDecimal
173
+ BigDecimal(value.to_s)
174
+ when :Boolean
175
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
176
+ true
177
+ else
178
+ false
179
+ end
180
+ when :Object
181
+ # generic object (usually a Hash), return directly
182
+ value
183
+ when /\AArray<(?<inner_type>.+)>\z/
184
+ inner_type = Regexp.last_match[:inner_type]
185
+ value.map { |v| _deserialize(inner_type, v) }
186
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
187
+ k_type = Regexp.last_match[:k_type]
188
+ v_type = Regexp.last_match[:v_type]
189
+ {}.tap do |hash|
190
+ value.each do |k, v|
191
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
192
+ end
193
+ end
194
+ else # model
195
+ XeroRuby::Finance.const_get(type).build_from_hash(value)
196
+ end
197
+ end
198
+
199
+ # Returns the string representation of the object
200
+ # @return [String] String presentation of the object
201
+ def to_s
202
+ to_hash.to_s
203
+ end
204
+
205
+ # to_body is an alias to to_hash (backward compatibility)
206
+ # @return [Hash] Returns the object in the form of hash
207
+ def to_body
208
+ to_hash
209
+ end
210
+
211
+ # Returns the object in the form of hash
212
+ # @return [Hash] Returns the object in the form of hash
213
+ def to_hash(downcase: false)
214
+ hash = {}
215
+ self.class.attribute_map.each_pair do |attr, param|
216
+ value = self.send(attr)
217
+ next if value.nil?
218
+ key = downcase ? attr : param
219
+ hash[key] = _to_hash(value, downcase: downcase)
220
+ end
221
+ hash
222
+ end
223
+
224
+ # Returns the object in the form of hash with snake_case
225
+ def to_attributes
226
+ to_hash(downcase: true)
227
+ end
228
+
229
+ # Outputs non-array value in the form of hash
230
+ # For object, use to_hash. Otherwise, just return the value
231
+ # @param [Object] value Any valid value
232
+ # @return [Hash] Returns the value in the form of hash
233
+ def _to_hash(value, downcase: false)
234
+ if value.is_a?(Array)
235
+ value.map do |v|
236
+ v.to_hash(downcase: downcase)
237
+ end
238
+ elsif value.is_a?(Hash)
239
+ {}.tap do |hash|
240
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
241
+ end
242
+ elsif value.respond_to? :to_hash
243
+ value.to_hash(downcase: downcase)
244
+ else
245
+ value
246
+ end
247
+ end
248
+
249
+ def parse_date(datestring)
250
+ if datestring.include?('Date')
251
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
252
+ original, date, timezone = *date_pattern.match(datestring)
253
+ date = (date.to_i / 1000)
254
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
255
+ elsif /(\d\d\d\d)-(\d\d)/.match(datestring) # handles dates w/out Days: YYYY-MM*-DD
256
+ Time.parse(datestring + '-01').strftime('%Y-%m-%dT%H:%M:%S').to_s
257
+ else # handle date 'types' for small subset of payroll API's
258
+ Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
259
+ end
260
+ end
261
+ end
262
+ end
@@ -0,0 +1,284 @@
1
+ =begin
2
+ #Xero Finance API
3
+
4
+ #The Finance API is a collection of endpoints which customers can use in the course of a loan application, which may assist lenders to gain the confidence they need to provide capital.
5
+
6
+ Contact: api@xero.com
7
+ Generated by: https://openapi-generator.tech
8
+ OpenAPI Generator version: 4.3.1
9
+
10
+ =end
11
+
12
+ require 'time'
13
+ require 'date'
14
+
15
+ module XeroRuby::Finance
16
+ require 'bigdecimal'
17
+
18
+ class IncomeByContactResponse
19
+ # Start date of the report
20
+ attr_accessor :start_date
21
+
22
+ # End date of the report
23
+ attr_accessor :end_date
24
+
25
+ # Total value
26
+ attr_accessor :total
27
+
28
+
29
+ attr_accessor :total_detail
30
+
31
+
32
+ attr_accessor :total_other
33
+
34
+
35
+ attr_accessor :contacts
36
+
37
+
38
+ attr_accessor :manual_journals
39
+
40
+ # Attribute mapping from ruby-style variable name to JSON key.
41
+ def self.attribute_map
42
+ {
43
+ :'start_date' => :'startDate',
44
+ :'end_date' => :'endDate',
45
+ :'total' => :'total',
46
+ :'total_detail' => :'totalDetail',
47
+ :'total_other' => :'totalOther',
48
+ :'contacts' => :'contacts',
49
+ :'manual_journals' => :'manualJournals'
50
+ }
51
+ end
52
+
53
+ # Attribute type mapping.
54
+ def self.openapi_types
55
+ {
56
+ :'start_date' => :'Date',
57
+ :'end_date' => :'Date',
58
+ :'total' => :'BigDecimal',
59
+ :'total_detail' => :'TotalDetail',
60
+ :'total_other' => :'TotalOther',
61
+ :'contacts' => :'Array<ContactDetail>',
62
+ :'manual_journals' => :'ManualJournalTotal'
63
+ }
64
+ end
65
+
66
+ # Initializes the object
67
+ # @param [Hash] attributes Model attributes in the form of hash
68
+ def initialize(attributes = {})
69
+ if (!attributes.is_a?(Hash))
70
+ fail ArgumentError, "The input argument (attributes) must be a hash in `XeroRuby::Finance::IncomeByContactResponse` initialize method"
71
+ end
72
+
73
+ # check to see if the attribute exists and convert string to symbol for hash key
74
+ attributes = attributes.each_with_object({}) { |(k, v), h|
75
+ if (!self.class.attribute_map.key?(k.to_sym))
76
+ fail ArgumentError, "`#{k}` is not a valid attribute in `XeroRuby::Finance::IncomeByContactResponse`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
77
+ end
78
+ h[k.to_sym] = v
79
+ }
80
+
81
+ if attributes.key?(:'start_date')
82
+ self.start_date = attributes[:'start_date']
83
+ end
84
+
85
+ if attributes.key?(:'end_date')
86
+ self.end_date = attributes[:'end_date']
87
+ end
88
+
89
+ if attributes.key?(:'total')
90
+ self.total = attributes[:'total']
91
+ end
92
+
93
+ if attributes.key?(:'total_detail')
94
+ self.total_detail = attributes[:'total_detail']
95
+ end
96
+
97
+ if attributes.key?(:'total_other')
98
+ self.total_other = attributes[:'total_other']
99
+ end
100
+
101
+ if attributes.key?(:'contacts')
102
+ if (value = attributes[:'contacts']).is_a?(Array)
103
+ self.contacts = value
104
+ end
105
+ end
106
+
107
+ if attributes.key?(:'manual_journals')
108
+ self.manual_journals = attributes[:'manual_journals']
109
+ end
110
+ end
111
+
112
+ # Show invalid properties with the reasons. Usually used together with valid?
113
+ # @return Array for valid properties with the reasons
114
+ def list_invalid_properties
115
+ invalid_properties = Array.new
116
+ invalid_properties
117
+ end
118
+
119
+ # Check to see if the all the properties in the model are valid
120
+ # @return true if the model is valid
121
+ def valid?
122
+ true
123
+ end
124
+
125
+ # Checks equality by comparing each attribute.
126
+ # @param [Object] Object to be compared
127
+ def ==(o)
128
+ return true if self.equal?(o)
129
+ self.class == o.class &&
130
+ start_date == o.start_date &&
131
+ end_date == o.end_date &&
132
+ total == o.total &&
133
+ total_detail == o.total_detail &&
134
+ total_other == o.total_other &&
135
+ contacts == o.contacts &&
136
+ manual_journals == o.manual_journals
137
+ end
138
+
139
+ # @see the `==` method
140
+ # @param [Object] Object to be compared
141
+ def eql?(o)
142
+ self == o
143
+ end
144
+
145
+ # Calculates hash code according to all attributes.
146
+ # @return [Integer] Hash code
147
+ def hash
148
+ [start_date, end_date, total, total_detail, total_other, contacts, manual_journals].hash
149
+ end
150
+
151
+ # Builds the object from hash
152
+ # @param [Hash] attributes Model attributes in the form of hash
153
+ # @return [Object] Returns the model itself
154
+ def self.build_from_hash(attributes)
155
+ new.build_from_hash(attributes)
156
+ end
157
+
158
+ # Builds the object from hash
159
+ # @param [Hash] attributes Model attributes in the form of hash
160
+ # @return [Object] Returns the model itself
161
+ def build_from_hash(attributes)
162
+ return nil unless attributes.is_a?(Hash)
163
+ self.class.openapi_types.each_pair do |key, type|
164
+ if type =~ /\AArray<(.*)>/i
165
+ # check to ensure the input is an array given that the attribute
166
+ # is documented as an array but the input is not
167
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
168
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
169
+ end
170
+ elsif !attributes[self.class.attribute_map[key]].nil?
171
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
172
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
173
+ end
174
+
175
+ self
176
+ end
177
+
178
+ # Deserializes the data based on type
179
+ # @param string type Data type
180
+ # @param string value Value to be deserialized
181
+ # @return [Object] Deserialized data
182
+ def _deserialize(type, value)
183
+ case type.to_sym
184
+ when :DateTime
185
+ DateTime.parse(parse_date(value))
186
+ when :Date
187
+ Date.parse(parse_date(value))
188
+ when :String
189
+ value.to_s
190
+ when :Integer
191
+ value.to_i
192
+ when :Float
193
+ value.to_f
194
+ when :BigDecimal
195
+ BigDecimal(value.to_s)
196
+ when :Boolean
197
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
198
+ true
199
+ else
200
+ false
201
+ end
202
+ when :Object
203
+ # generic object (usually a Hash), return directly
204
+ value
205
+ when /\AArray<(?<inner_type>.+)>\z/
206
+ inner_type = Regexp.last_match[:inner_type]
207
+ value.map { |v| _deserialize(inner_type, v) }
208
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
209
+ k_type = Regexp.last_match[:k_type]
210
+ v_type = Regexp.last_match[:v_type]
211
+ {}.tap do |hash|
212
+ value.each do |k, v|
213
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
214
+ end
215
+ end
216
+ else # model
217
+ XeroRuby::Finance.const_get(type).build_from_hash(value)
218
+ end
219
+ end
220
+
221
+ # Returns the string representation of the object
222
+ # @return [String] String presentation of the object
223
+ def to_s
224
+ to_hash.to_s
225
+ end
226
+
227
+ # to_body is an alias to to_hash (backward compatibility)
228
+ # @return [Hash] Returns the object in the form of hash
229
+ def to_body
230
+ to_hash
231
+ end
232
+
233
+ # Returns the object in the form of hash
234
+ # @return [Hash] Returns the object in the form of hash
235
+ def to_hash(downcase: false)
236
+ hash = {}
237
+ self.class.attribute_map.each_pair do |attr, param|
238
+ value = self.send(attr)
239
+ next if value.nil?
240
+ key = downcase ? attr : param
241
+ hash[key] = _to_hash(value, downcase: downcase)
242
+ end
243
+ hash
244
+ end
245
+
246
+ # Returns the object in the form of hash with snake_case
247
+ def to_attributes
248
+ to_hash(downcase: true)
249
+ end
250
+
251
+ # Outputs non-array value in the form of hash
252
+ # For object, use to_hash. Otherwise, just return the value
253
+ # @param [Object] value Any valid value
254
+ # @return [Hash] Returns the value in the form of hash
255
+ def _to_hash(value, downcase: false)
256
+ if value.is_a?(Array)
257
+ value.map do |v|
258
+ v.to_hash(downcase: downcase)
259
+ end
260
+ elsif value.is_a?(Hash)
261
+ {}.tap do |hash|
262
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
263
+ end
264
+ elsif value.respond_to? :to_hash
265
+ value.to_hash(downcase: downcase)
266
+ else
267
+ value
268
+ end
269
+ end
270
+
271
+ def parse_date(datestring)
272
+ if datestring.include?('Date')
273
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
274
+ original, date, timezone = *date_pattern.match(datestring)
275
+ date = (date.to_i / 1000)
276
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
277
+ elsif /(\d\d\d\d)-(\d\d)/.match(datestring) # handles dates w/out Days: YYYY-MM*-DD
278
+ Time.parse(datestring + '-01').strftime('%Y-%m-%dT%H:%M:%S').to_s
279
+ else # handle date 'types' for small subset of payroll API's
280
+ Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
281
+ end
282
+ end
283
+ end
284
+ end