xero-ruby 3.4.0 → 3.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (226) hide show
  1. checksums.yaml +4 -4
  2. data/lib/xero-ruby/api/finance_api.rb +961 -0
  3. data/lib/xero-ruby/api/payroll_uk_api.rb +2 -2
  4. data/lib/xero-ruby/api_client.rb +12 -1
  5. data/lib/xero-ruby/configuration.rb +2 -0
  6. data/lib/xero-ruby/models/accounting/account.rb +34 -34
  7. data/lib/xero-ruby/models/accounting/account_type.rb +22 -22
  8. data/lib/xero-ruby/models/accounting/action.rb +2 -2
  9. data/lib/xero-ruby/models/accounting/address.rb +2 -2
  10. data/lib/xero-ruby/models/accounting/address_for_organisation.rb +3 -3
  11. data/lib/xero-ruby/models/accounting/bank_transaction.rb +11 -11
  12. data/lib/xero-ruby/models/accounting/batch_payment.rb +4 -4
  13. data/lib/xero-ruby/models/accounting/branding_theme.rb +1 -1
  14. data/lib/xero-ruby/models/accounting/budget.rb +2 -2
  15. data/lib/xero-ruby/models/accounting/contact.rb +89 -4
  16. data/lib/xero-ruby/models/accounting/contact_group.rb +2 -2
  17. data/lib/xero-ruby/models/accounting/country_code.rb +240 -240
  18. data/lib/xero-ruby/models/accounting/credit_note.rb +8 -8
  19. data/lib/xero-ruby/models/accounting/currency_code.rb +166 -166
  20. data/lib/xero-ruby/models/accounting/employee.rb +4 -4
  21. data/lib/xero-ruby/models/accounting/expense_claim.rb +5 -5
  22. data/lib/xero-ruby/models/accounting/external_link.rb +5 -5
  23. data/lib/xero-ruby/models/accounting/invoice.rb +14 -14
  24. data/lib/xero-ruby/models/accounting/journal.rb +25 -25
  25. data/lib/xero-ruby/models/accounting/line_amount_types.rb +3 -3
  26. data/lib/xero-ruby/models/accounting/line_item.rb +11 -1
  27. data/lib/xero-ruby/models/accounting/line_item_item.rb +272 -0
  28. data/lib/xero-ruby/models/accounting/linked_transaction.rb +8 -8
  29. data/lib/xero-ruby/models/accounting/manual_journal.rb +5 -5
  30. data/lib/xero-ruby/models/accounting/organisation.rb +70 -70
  31. data/lib/xero-ruby/models/accounting/overpayment.rb +6 -6
  32. data/lib/xero-ruby/models/accounting/payment.rb +10 -10
  33. data/lib/xero-ruby/models/accounting/payment_term_type.rb +4 -4
  34. data/lib/xero-ruby/models/accounting/phone.rb +5 -5
  35. data/lib/xero-ruby/models/accounting/prepayment.rb +7 -7
  36. data/lib/xero-ruby/models/accounting/purchase_order.rb +5 -5
  37. data/lib/xero-ruby/models/accounting/quote_line_amount_types.rb +3 -3
  38. data/lib/xero-ruby/models/accounting/quote_status_codes.rb +6 -6
  39. data/lib/xero-ruby/models/accounting/receipt.rb +5 -5
  40. data/lib/xero-ruby/models/accounting/repeating_invoice.rb +5 -5
  41. data/lib/xero-ruby/models/accounting/report.rb +1 -1
  42. data/lib/xero-ruby/models/accounting/row_type.rb +4 -4
  43. data/lib/xero-ruby/models/accounting/schedule.rb +8 -8
  44. data/lib/xero-ruby/models/accounting/tax_rate.rb +78 -78
  45. data/lib/xero-ruby/models/accounting/tax_type.rb +59 -59
  46. data/lib/xero-ruby/models/accounting/time_zone.rb +109 -109
  47. data/lib/xero-ruby/models/accounting/tracking_category.rb +3 -3
  48. data/lib/xero-ruby/models/accounting/tracking_option.rb +3 -3
  49. data/lib/xero-ruby/models/accounting/user.rb +7 -7
  50. data/lib/xero-ruby/models/app_store/plan.rb +6 -5
  51. data/lib/xero-ruby/models/app_store/product.rb +2 -2
  52. data/lib/xero-ruby/models/app_store/subscription.rb +37 -0
  53. data/lib/xero-ruby/models/app_store/subscription_item.rb +53 -1
  54. data/lib/xero-ruby/models/assets/asset_status.rb +3 -3
  55. data/lib/xero-ruby/models/assets/asset_status_query_param.rb +3 -3
  56. data/lib/xero-ruby/models/assets/book_depreciation_setting.rb +11 -11
  57. data/lib/xero-ruby/models/files/object_group.rb +12 -11
  58. data/lib/xero-ruby/models/files/object_type.rb +56 -55
  59. data/lib/xero-ruby/models/finance/account_usage.rb +342 -0
  60. data/lib/xero-ruby/models/finance/account_usage_response.rb +254 -0
  61. data/lib/xero-ruby/models/finance/balance_sheet_account_detail.rb +262 -0
  62. data/lib/xero-ruby/models/finance/balance_sheet_account_group.rb +234 -0
  63. data/lib/xero-ruby/models/finance/balance_sheet_account_type.rb +244 -0
  64. data/lib/xero-ruby/models/finance/balance_sheet_response.rb +252 -0
  65. data/lib/xero-ruby/models/finance/bank_statement_accounting_response.rb +254 -0
  66. data/lib/xero-ruby/models/finance/bank_statement_response.rb +232 -0
  67. data/lib/xero-ruby/models/finance/bank_transaction_response.rb +274 -0
  68. data/lib/xero-ruby/models/finance/cash_account_response.rb +262 -0
  69. data/lib/xero-ruby/models/finance/cash_balance.rb +242 -0
  70. data/lib/xero-ruby/models/finance/cash_validation_response.rb +262 -0
  71. data/lib/xero-ruby/models/finance/cashflow_account.rb +282 -0
  72. data/lib/xero-ruby/models/finance/cashflow_activity.rb +244 -0
  73. data/lib/xero-ruby/models/finance/cashflow_response.rb +254 -0
  74. data/lib/xero-ruby/models/finance/cashflow_type.rb +244 -0
  75. data/lib/xero-ruby/models/finance/contact_detail.rb +274 -0
  76. data/lib/xero-ruby/models/finance/contact_response.rb +232 -0
  77. data/lib/xero-ruby/models/finance/contact_total_detail.rb +242 -0
  78. data/lib/xero-ruby/models/finance/contact_total_other.rb +252 -0
  79. data/lib/xero-ruby/models/finance/credit_note_response.rb +254 -0
  80. data/lib/xero-ruby/models/finance/current_statement_response.rb +272 -0
  81. data/lib/xero-ruby/models/finance/data_source_response.rb +362 -0
  82. data/lib/xero-ruby/models/finance/history_record_response.rb +262 -0
  83. data/lib/xero-ruby/models/finance/income_by_contact_response.rb +284 -0
  84. data/lib/xero-ruby/models/finance/invoice_response.rb +254 -0
  85. data/lib/xero-ruby/models/finance/line_item_response.rb +252 -0
  86. data/lib/xero-ruby/models/finance/lock_history_model.rb +242 -0
  87. data/lib/xero-ruby/models/finance/lock_history_response.rb +244 -0
  88. data/lib/xero-ruby/models/finance/manual_journal_total.rb +222 -0
  89. data/lib/xero-ruby/models/finance/overpayment_response.rb +254 -0
  90. data/lib/xero-ruby/models/finance/payment_response.rb +312 -0
  91. data/lib/xero-ruby/models/finance/pnl_account.rb +272 -0
  92. data/lib/xero-ruby/models/finance/pnl_account_class.rb +234 -0
  93. data/lib/xero-ruby/models/finance/pnl_account_type.rb +244 -0
  94. data/lib/xero-ruby/models/finance/practice_response.rb +262 -0
  95. data/lib/xero-ruby/models/finance/prepayment_response.rb +254 -0
  96. data/lib/xero-ruby/models/finance/problem.rb +252 -0
  97. data/lib/xero-ruby/models/finance/problem_type.rb +44 -0
  98. data/lib/xero-ruby/models/finance/profit_and_loss_response.rb +262 -0
  99. data/lib/xero-ruby/models/finance/report_history_model.rb +242 -0
  100. data/lib/xero-ruby/models/finance/report_history_response.rb +244 -0
  101. data/lib/xero-ruby/models/finance/statement_balance_response.rb +232 -0
  102. data/lib/xero-ruby/models/finance/statement_line_response.rb +346 -0
  103. data/lib/xero-ruby/models/finance/statement_lines_response.rb +382 -0
  104. data/lib/xero-ruby/models/finance/statement_response.rb +274 -0
  105. data/lib/xero-ruby/models/finance/total_detail.rb +242 -0
  106. data/lib/xero-ruby/models/finance/total_other.rb +242 -0
  107. data/lib/xero-ruby/models/finance/trial_balance_account.rb +312 -0
  108. data/lib/xero-ruby/models/finance/trial_balance_entry.rb +232 -0
  109. data/lib/xero-ruby/models/finance/trial_balance_movement.rb +252 -0
  110. data/lib/xero-ruby/models/finance/trial_balance_response.rb +244 -0
  111. data/lib/xero-ruby/models/finance/user_activities_response.rb +244 -0
  112. data/lib/xero-ruby/models/finance/user_response.rb +336 -0
  113. data/lib/xero-ruby/models/payroll_au/account_type.rb +23 -23
  114. data/lib/xero-ruby/models/payroll_au/allowance_category.rb +41 -0
  115. data/lib/xero-ruby/models/payroll_au/allowance_type.rb +10 -7
  116. data/lib/xero-ruby/models/payroll_au/calendar_type.rb +6 -6
  117. data/lib/xero-ruby/models/payroll_au/deduction_type.rb +3 -3
  118. data/lib/xero-ruby/models/payroll_au/deduction_type_calculation_type.rb +3 -3
  119. data/lib/xero-ruby/models/payroll_au/earnings_rate.rb +14 -4
  120. data/lib/xero-ruby/models/payroll_au/earnings_rate_calculation_type.rb +3 -3
  121. data/lib/xero-ruby/models/payroll_au/earnings_type.rb +12 -12
  122. data/lib/xero-ruby/models/payroll_au/employee.rb +11 -11
  123. data/lib/xero-ruby/models/payroll_au/employee_status.rb +2 -2
  124. data/lib/xero-ruby/models/payroll_au/employment_basis.rb +5 -5
  125. data/lib/xero-ruby/models/payroll_au/employment_termination_payment_type.rb +2 -2
  126. data/lib/xero-ruby/models/payroll_au/entitlement_final_pay_payout_type.rb +2 -2
  127. data/lib/xero-ruby/models/payroll_au/leave_line_calculation_type.rb +5 -5
  128. data/lib/xero-ruby/models/payroll_au/leave_period_status.rb +2 -2
  129. data/lib/xero-ruby/models/payroll_au/leave_type_contribution_type.rb +4 -4
  130. data/lib/xero-ruby/models/payroll_au/manual_tax_type.rb +6 -6
  131. data/lib/xero-ruby/models/payroll_au/pay_run_status.rb +2 -2
  132. data/lib/xero-ruby/models/payroll_au/payment_frequency_type.rb +7 -7
  133. data/lib/xero-ruby/models/payroll_au/rate_type.rb +3 -3
  134. data/lib/xero-ruby/models/payroll_au/residency_status.rb +3 -3
  135. data/lib/xero-ruby/models/payroll_au/state.rb +8 -8
  136. data/lib/xero-ruby/models/payroll_au/super_fund_type.rb +2 -2
  137. data/lib/xero-ruby/models/payroll_au/superannuation_calculation_type.rb +3 -3
  138. data/lib/xero-ruby/models/payroll_au/superannuation_contribution_type.rb +4 -4
  139. data/lib/xero-ruby/models/payroll_au/tfn_exemption_type.rb +4 -4
  140. data/lib/xero-ruby/models/payroll_au/timesheet_status.rb +5 -5
  141. data/lib/xero-ruby/models/payroll_nz/account.rb +4 -4
  142. data/lib/xero-ruby/models/payroll_nz/bank_account.rb +2 -2
  143. data/lib/xero-ruby/models/payroll_nz/benefit.rb +5 -5
  144. data/lib/xero-ruby/models/payroll_nz/calendar_type.rb +7 -7
  145. data/lib/xero-ruby/models/payroll_nz/deduction.rb +4 -4
  146. data/lib/xero-ruby/models/payroll_nz/earnings_rate.rb +18 -18
  147. data/lib/xero-ruby/models/payroll_nz/employee.rb +2 -2
  148. data/lib/xero-ruby/models/payroll_nz/employee_leave_type.rb +4 -4
  149. data/lib/xero-ruby/models/payroll_nz/employee_statutory_leave_balance.rb +6 -6
  150. data/lib/xero-ruby/models/payroll_nz/employee_statutory_leave_summary.rb +8 -8
  151. data/lib/xero-ruby/models/payroll_nz/employee_tax.rb +5 -5
  152. data/lib/xero-ruby/models/payroll_nz/leave_period.rb +2 -2
  153. data/lib/xero-ruby/models/payroll_nz/pay_run.rb +5 -5
  154. data/lib/xero-ruby/models/payroll_nz/pay_slip.rb +3 -3
  155. data/lib/xero-ruby/models/payroll_nz/payment_method.rb +3 -3
  156. data/lib/xero-ruby/models/payroll_nz/reimbursement.rb +8 -8
  157. data/lib/xero-ruby/models/payroll_nz/salary_and_wage.rb +5 -5
  158. data/lib/xero-ruby/models/payroll_nz/statutory_deduction_category.rb +11 -11
  159. data/lib/xero-ruby/models/payroll_nz/tax_code.rb +19 -19
  160. data/lib/xero-ruby/models/payroll_nz/tax_settings.rb +2 -2
  161. data/lib/xero-ruby/models/payroll_nz/timesheet.rb +4 -4
  162. data/lib/xero-ruby/models/payroll_uk/account.rb +7 -7
  163. data/lib/xero-ruby/models/payroll_uk/benefit.rb +4 -4
  164. data/lib/xero-ruby/models/payroll_uk/deduction.rb +12 -12
  165. data/lib/xero-ruby/models/payroll_uk/earnings_rate.rb +26 -26
  166. data/lib/xero-ruby/models/payroll_uk/employee.rb +16 -6
  167. data/lib/xero-ruby/models/payroll_uk/employee_leave_type.rb +4 -4
  168. data/lib/xero-ruby/models/payroll_uk/employee_statutory_leave_balance.rb +6 -6
  169. data/lib/xero-ruby/models/payroll_uk/employee_statutory_leave_summary.rb +8 -8
  170. data/lib/xero-ruby/models/payroll_uk/employment.rb +8 -8
  171. data/lib/xero-ruby/models/payroll_uk/leave_period.rb +2 -2
  172. data/lib/xero-ruby/models/payroll_uk/pay_run.rb +11 -11
  173. data/lib/xero-ruby/models/payroll_uk/pay_run_calendar.rb +6 -6
  174. data/lib/xero-ruby/models/payroll_uk/payment_method.rb +3 -3
  175. data/lib/xero-ruby/models/payroll_uk/payslip.rb +3 -3
  176. data/lib/xero-ruby/models/payroll_uk/salary_and_wage.rb +5 -5
  177. data/lib/xero-ruby/models/payroll_uk/statutory_deduction_category.rb +14 -14
  178. data/lib/xero-ruby/models/payroll_uk/timesheet.rb +3 -3
  179. data/lib/xero-ruby/models/projects/charge_type.rb +3 -3
  180. data/lib/xero-ruby/models/projects/currency_code.rb +164 -164
  181. data/lib/xero-ruby/models/projects/project_status.rb +2 -2
  182. data/lib/xero-ruby/models/projects/task.rb +3 -3
  183. data/lib/xero-ruby/models/projects/time_entry.rb +3 -3
  184. data/lib/xero-ruby/version.rb +2 -2
  185. data/lib/xero-ruby.rb +57 -0
  186. data/spec/api_client_spec.rb +3 -0
  187. data/spec/app_store/api/app_store_api_spec.rb +1 -1
  188. data/spec/configuration_spec.rb +1 -0
  189. data/spec/finance/api/finance_api_spec.rb +156 -0
  190. data/spec/finance/models/account_usage_response_spec.rb +58 -0
  191. data/spec/finance/models/account_usage_spec.rb +112 -0
  192. data/spec/finance/models/balance_sheet_account_detail_spec.rb +64 -0
  193. data/spec/finance/models/balance_sheet_account_group_spec.rb +46 -0
  194. data/spec/finance/models/balance_sheet_account_type_spec.rb +52 -0
  195. data/spec/finance/models/balance_sheet_response_spec.rb +58 -0
  196. data/spec/finance/models/bank_statement_response_spec.rb +46 -0
  197. data/spec/finance/models/cash_account_response_spec.rb +64 -0
  198. data/spec/finance/models/cash_balance_spec.rb +52 -0
  199. data/spec/finance/models/cash_validation_response_spec.rb +64 -0
  200. data/spec/finance/models/cashflow_account_spec.rb +76 -0
  201. data/spec/finance/models/cashflow_activity_spec.rb +52 -0
  202. data/spec/finance/models/cashflow_response_spec.rb +58 -0
  203. data/spec/finance/models/cashflow_type_spec.rb +52 -0
  204. data/spec/finance/models/current_statement_response_spec.rb +70 -0
  205. data/spec/finance/models/data_source_response_spec.rb +124 -0
  206. data/spec/finance/models/history_record_response_spec.rb +64 -0
  207. data/spec/finance/models/lock_history_model_spec.rb +52 -0
  208. data/spec/finance/models/lock_history_response_spec.rb +52 -0
  209. data/spec/finance/models/pnl_account_class_spec.rb +46 -0
  210. data/spec/finance/models/pnl_account_spec.rb +70 -0
  211. data/spec/finance/models/pnl_account_type_spec.rb +52 -0
  212. data/spec/finance/models/practice_response_spec.rb +64 -0
  213. data/spec/finance/models/problem_spec.rb +58 -0
  214. data/spec/finance/models/problem_type_spec.rb +34 -0
  215. data/spec/finance/models/profit_and_loss_response_spec.rb +64 -0
  216. data/spec/finance/models/report_history_model_spec.rb +52 -0
  217. data/spec/finance/models/report_history_response_spec.rb +52 -0
  218. data/spec/finance/models/statement_balance_response_spec.rb +46 -0
  219. data/spec/finance/models/statement_lines_response_spec.rb +136 -0
  220. data/spec/finance/models/trial_balance_account_spec.rb +94 -0
  221. data/spec/finance/models/trial_balance_entry_spec.rb +46 -0
  222. data/spec/finance/models/trial_balance_movement_spec.rb +58 -0
  223. data/spec/finance/models/trial_balance_response_spec.rb +52 -0
  224. data/spec/finance/models/user_activities_response_spec.rb +52 -0
  225. data/spec/finance/models/user_response_spec.rb +106 -0
  226. metadata +133 -2
@@ -0,0 +1,382 @@
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 StatementLinesResponse
19
+ # Sum of the amounts of all statement lines where both the reconciled flag is set to FALSE, and the amount is positive.
20
+ attr_accessor :unreconciled_amount_pos
21
+
22
+ # Sum of the amounts of all statement lines where both the reconciled flag is set to FALSE, and the amount is negative.
23
+ attr_accessor :unreconciled_amount_neg
24
+
25
+ # Count of all statement lines where the reconciled flag is set to FALSE.
26
+ attr_accessor :unreconciled_lines
27
+
28
+ # Sum-product of age of statement line in days multiplied by transaction amount, divided by the sum of transaction amount - in for those statement lines in which the reconciled flag is set to FALSE, and the amount is positive. Provides an indication of the age of unreconciled transactions.
29
+ attr_accessor :avg_days_unreconciled_pos
30
+
31
+ # Sum-product of age of statement line in days multiplied by transaction amount, divided by the sum of transaction amount - in for those statement lines in which the reconciled flag is set to FALSE, and the amount is negative. Provides an indication of the age of unreconciled transactions.
32
+ attr_accessor :avg_days_unreconciled_neg
33
+
34
+ # UTC Date which is the earliest transaction date of a statement line for which the reconciled flag is set to FALSE. This date is represented in ISO 8601 format.
35
+ attr_accessor :earliest_unreconciled_transaction
36
+
37
+ # UTC Date which is the latest transaction date of a statement line for which the reconciled flag is set to FALSE. This date is represented in ISO 8601 format.
38
+ attr_accessor :latest_unreconciled_transaction
39
+
40
+ # Sum of the amounts of all deleted statement lines. Transactions may be deleted due to duplication or otherwise.
41
+ attr_accessor :deleted_amount
42
+
43
+ # Sum of the amounts of all statement lines. This is used as a metric of comparison to the unreconciled figures above.
44
+ attr_accessor :total_amount
45
+
46
+
47
+ attr_accessor :data_source
48
+
49
+ # UTC Date which is the earliest transaction date of a statement line for which the reconciled flag is set to TRUE. This date is represented in ISO 8601 format.
50
+ attr_accessor :earliest_reconciled_transaction
51
+
52
+ # UTC Date which is the latest transaction date of a statement line for which the reconciled flag is set to TRUE. This date is represented in ISO 8601 format.
53
+ attr_accessor :latest_reconciled_transaction
54
+
55
+ # Sum of the amounts of all statement lines where both the reconciled flag is set to TRUE, and the amount is positive.
56
+ attr_accessor :reconciled_amount_pos
57
+
58
+ # Sum of the amounts of all statement lines where both the reconciled flag is set to TRUE, and the amount is negative.
59
+ attr_accessor :reconciled_amount_neg
60
+
61
+ # Count of all statement lines where the reconciled flag is set to TRUE
62
+ attr_accessor :reconciled_lines
63
+
64
+ # Sum of the amounts of all statement lines where the amount is positive
65
+ attr_accessor :total_amount_pos
66
+
67
+ # Sum of the amounts of all statement lines where the amount is negative.
68
+ attr_accessor :total_amount_neg
69
+
70
+ # Attribute mapping from ruby-style variable name to JSON key.
71
+ def self.attribute_map
72
+ {
73
+ :'unreconciled_amount_pos' => :'unreconciledAmountPos',
74
+ :'unreconciled_amount_neg' => :'unreconciledAmountNeg',
75
+ :'unreconciled_lines' => :'unreconciledLines',
76
+ :'avg_days_unreconciled_pos' => :'avgDaysUnreconciledPos',
77
+ :'avg_days_unreconciled_neg' => :'avgDaysUnreconciledNeg',
78
+ :'earliest_unreconciled_transaction' => :'earliestUnreconciledTransaction',
79
+ :'latest_unreconciled_transaction' => :'latestUnreconciledTransaction',
80
+ :'deleted_amount' => :'deletedAmount',
81
+ :'total_amount' => :'totalAmount',
82
+ :'data_source' => :'dataSource',
83
+ :'earliest_reconciled_transaction' => :'earliestReconciledTransaction',
84
+ :'latest_reconciled_transaction' => :'latestReconciledTransaction',
85
+ :'reconciled_amount_pos' => :'reconciledAmountPos',
86
+ :'reconciled_amount_neg' => :'reconciledAmountNeg',
87
+ :'reconciled_lines' => :'reconciledLines',
88
+ :'total_amount_pos' => :'totalAmountPos',
89
+ :'total_amount_neg' => :'totalAmountNeg'
90
+ }
91
+ end
92
+
93
+ # Attribute type mapping.
94
+ def self.openapi_types
95
+ {
96
+ :'unreconciled_amount_pos' => :'BigDecimal',
97
+ :'unreconciled_amount_neg' => :'BigDecimal',
98
+ :'unreconciled_lines' => :'Integer',
99
+ :'avg_days_unreconciled_pos' => :'BigDecimal',
100
+ :'avg_days_unreconciled_neg' => :'BigDecimal',
101
+ :'earliest_unreconciled_transaction' => :'Date',
102
+ :'latest_unreconciled_transaction' => :'Date',
103
+ :'deleted_amount' => :'BigDecimal',
104
+ :'total_amount' => :'BigDecimal',
105
+ :'data_source' => :'DataSourceResponse',
106
+ :'earliest_reconciled_transaction' => :'Date',
107
+ :'latest_reconciled_transaction' => :'Date',
108
+ :'reconciled_amount_pos' => :'BigDecimal',
109
+ :'reconciled_amount_neg' => :'BigDecimal',
110
+ :'reconciled_lines' => :'Integer',
111
+ :'total_amount_pos' => :'BigDecimal',
112
+ :'total_amount_neg' => :'BigDecimal'
113
+ }
114
+ end
115
+
116
+ # Initializes the object
117
+ # @param [Hash] attributes Model attributes in the form of hash
118
+ def initialize(attributes = {})
119
+ if (!attributes.is_a?(Hash))
120
+ fail ArgumentError, "The input argument (attributes) must be a hash in `XeroRuby::Finance::StatementLinesResponse` initialize method"
121
+ end
122
+
123
+ # check to see if the attribute exists and convert string to symbol for hash key
124
+ attributes = attributes.each_with_object({}) { |(k, v), h|
125
+ if (!self.class.attribute_map.key?(k.to_sym))
126
+ fail ArgumentError, "`#{k}` is not a valid attribute in `XeroRuby::Finance::StatementLinesResponse`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
127
+ end
128
+ h[k.to_sym] = v
129
+ }
130
+
131
+ if attributes.key?(:'unreconciled_amount_pos')
132
+ self.unreconciled_amount_pos = attributes[:'unreconciled_amount_pos']
133
+ end
134
+
135
+ if attributes.key?(:'unreconciled_amount_neg')
136
+ self.unreconciled_amount_neg = attributes[:'unreconciled_amount_neg']
137
+ end
138
+
139
+ if attributes.key?(:'unreconciled_lines')
140
+ self.unreconciled_lines = attributes[:'unreconciled_lines']
141
+ end
142
+
143
+ if attributes.key?(:'avg_days_unreconciled_pos')
144
+ self.avg_days_unreconciled_pos = attributes[:'avg_days_unreconciled_pos']
145
+ end
146
+
147
+ if attributes.key?(:'avg_days_unreconciled_neg')
148
+ self.avg_days_unreconciled_neg = attributes[:'avg_days_unreconciled_neg']
149
+ end
150
+
151
+ if attributes.key?(:'earliest_unreconciled_transaction')
152
+ self.earliest_unreconciled_transaction = attributes[:'earliest_unreconciled_transaction']
153
+ end
154
+
155
+ if attributes.key?(:'latest_unreconciled_transaction')
156
+ self.latest_unreconciled_transaction = attributes[:'latest_unreconciled_transaction']
157
+ end
158
+
159
+ if attributes.key?(:'deleted_amount')
160
+ self.deleted_amount = attributes[:'deleted_amount']
161
+ end
162
+
163
+ if attributes.key?(:'total_amount')
164
+ self.total_amount = attributes[:'total_amount']
165
+ end
166
+
167
+ if attributes.key?(:'data_source')
168
+ self.data_source = attributes[:'data_source']
169
+ end
170
+
171
+ if attributes.key?(:'earliest_reconciled_transaction')
172
+ self.earliest_reconciled_transaction = attributes[:'earliest_reconciled_transaction']
173
+ end
174
+
175
+ if attributes.key?(:'latest_reconciled_transaction')
176
+ self.latest_reconciled_transaction = attributes[:'latest_reconciled_transaction']
177
+ end
178
+
179
+ if attributes.key?(:'reconciled_amount_pos')
180
+ self.reconciled_amount_pos = attributes[:'reconciled_amount_pos']
181
+ end
182
+
183
+ if attributes.key?(:'reconciled_amount_neg')
184
+ self.reconciled_amount_neg = attributes[:'reconciled_amount_neg']
185
+ end
186
+
187
+ if attributes.key?(:'reconciled_lines')
188
+ self.reconciled_lines = attributes[:'reconciled_lines']
189
+ end
190
+
191
+ if attributes.key?(:'total_amount_pos')
192
+ self.total_amount_pos = attributes[:'total_amount_pos']
193
+ end
194
+
195
+ if attributes.key?(:'total_amount_neg')
196
+ self.total_amount_neg = attributes[:'total_amount_neg']
197
+ end
198
+ end
199
+
200
+ # Show invalid properties with the reasons. Usually used together with valid?
201
+ # @return Array for valid properties with the reasons
202
+ def list_invalid_properties
203
+ invalid_properties = Array.new
204
+ invalid_properties
205
+ end
206
+
207
+ # Check to see if the all the properties in the model are valid
208
+ # @return true if the model is valid
209
+ def valid?
210
+ true
211
+ end
212
+
213
+ # Checks equality by comparing each attribute.
214
+ # @param [Object] Object to be compared
215
+ def ==(o)
216
+ return true if self.equal?(o)
217
+ self.class == o.class &&
218
+ unreconciled_amount_pos == o.unreconciled_amount_pos &&
219
+ unreconciled_amount_neg == o.unreconciled_amount_neg &&
220
+ unreconciled_lines == o.unreconciled_lines &&
221
+ avg_days_unreconciled_pos == o.avg_days_unreconciled_pos &&
222
+ avg_days_unreconciled_neg == o.avg_days_unreconciled_neg &&
223
+ earliest_unreconciled_transaction == o.earliest_unreconciled_transaction &&
224
+ latest_unreconciled_transaction == o.latest_unreconciled_transaction &&
225
+ deleted_amount == o.deleted_amount &&
226
+ total_amount == o.total_amount &&
227
+ data_source == o.data_source &&
228
+ earliest_reconciled_transaction == o.earliest_reconciled_transaction &&
229
+ latest_reconciled_transaction == o.latest_reconciled_transaction &&
230
+ reconciled_amount_pos == o.reconciled_amount_pos &&
231
+ reconciled_amount_neg == o.reconciled_amount_neg &&
232
+ reconciled_lines == o.reconciled_lines &&
233
+ total_amount_pos == o.total_amount_pos &&
234
+ total_amount_neg == o.total_amount_neg
235
+ end
236
+
237
+ # @see the `==` method
238
+ # @param [Object] Object to be compared
239
+ def eql?(o)
240
+ self == o
241
+ end
242
+
243
+ # Calculates hash code according to all attributes.
244
+ # @return [Integer] Hash code
245
+ def hash
246
+ [unreconciled_amount_pos, unreconciled_amount_neg, unreconciled_lines, avg_days_unreconciled_pos, avg_days_unreconciled_neg, earliest_unreconciled_transaction, latest_unreconciled_transaction, deleted_amount, total_amount, data_source, earliest_reconciled_transaction, latest_reconciled_transaction, reconciled_amount_pos, reconciled_amount_neg, reconciled_lines, total_amount_pos, total_amount_neg].hash
247
+ end
248
+
249
+ # Builds the object from hash
250
+ # @param [Hash] attributes Model attributes in the form of hash
251
+ # @return [Object] Returns the model itself
252
+ def self.build_from_hash(attributes)
253
+ new.build_from_hash(attributes)
254
+ end
255
+
256
+ # Builds the object from hash
257
+ # @param [Hash] attributes Model attributes in the form of hash
258
+ # @return [Object] Returns the model itself
259
+ def build_from_hash(attributes)
260
+ return nil unless attributes.is_a?(Hash)
261
+ self.class.openapi_types.each_pair do |key, type|
262
+ if type =~ /\AArray<(.*)>/i
263
+ # check to ensure the input is an array given that the attribute
264
+ # is documented as an array but the input is not
265
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
266
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
267
+ end
268
+ elsif !attributes[self.class.attribute_map[key]].nil?
269
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
270
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
271
+ end
272
+
273
+ self
274
+ end
275
+
276
+ # Deserializes the data based on type
277
+ # @param string type Data type
278
+ # @param string value Value to be deserialized
279
+ # @return [Object] Deserialized data
280
+ def _deserialize(type, value)
281
+ case type.to_sym
282
+ when :DateTime
283
+ DateTime.parse(parse_date(value))
284
+ when :Date
285
+ Date.parse(parse_date(value))
286
+ when :String
287
+ value.to_s
288
+ when :Integer
289
+ value.to_i
290
+ when :Float
291
+ value.to_f
292
+ when :BigDecimal
293
+ BigDecimal(value.to_s)
294
+ when :Boolean
295
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
296
+ true
297
+ else
298
+ false
299
+ end
300
+ when :Object
301
+ # generic object (usually a Hash), return directly
302
+ value
303
+ when /\AArray<(?<inner_type>.+)>\z/
304
+ inner_type = Regexp.last_match[:inner_type]
305
+ value.map { |v| _deserialize(inner_type, v) }
306
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
307
+ k_type = Regexp.last_match[:k_type]
308
+ v_type = Regexp.last_match[:v_type]
309
+ {}.tap do |hash|
310
+ value.each do |k, v|
311
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
312
+ end
313
+ end
314
+ else # model
315
+ XeroRuby::Finance.const_get(type).build_from_hash(value)
316
+ end
317
+ end
318
+
319
+ # Returns the string representation of the object
320
+ # @return [String] String presentation of the object
321
+ def to_s
322
+ to_hash.to_s
323
+ end
324
+
325
+ # to_body is an alias to to_hash (backward compatibility)
326
+ # @return [Hash] Returns the object in the form of hash
327
+ def to_body
328
+ to_hash
329
+ end
330
+
331
+ # Returns the object in the form of hash
332
+ # @return [Hash] Returns the object in the form of hash
333
+ def to_hash(downcase: false)
334
+ hash = {}
335
+ self.class.attribute_map.each_pair do |attr, param|
336
+ value = self.send(attr)
337
+ next if value.nil?
338
+ key = downcase ? attr : param
339
+ hash[key] = _to_hash(value, downcase: downcase)
340
+ end
341
+ hash
342
+ end
343
+
344
+ # Returns the object in the form of hash with snake_case
345
+ def to_attributes
346
+ to_hash(downcase: true)
347
+ end
348
+
349
+ # Outputs non-array value in the form of hash
350
+ # For object, use to_hash. Otherwise, just return the value
351
+ # @param [Object] value Any valid value
352
+ # @return [Hash] Returns the value in the form of hash
353
+ def _to_hash(value, downcase: false)
354
+ if value.is_a?(Array)
355
+ value.map do |v|
356
+ v.to_hash(downcase: downcase)
357
+ end
358
+ elsif value.is_a?(Hash)
359
+ {}.tap do |hash|
360
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
361
+ end
362
+ elsif value.respond_to? :to_hash
363
+ value.to_hash(downcase: downcase)
364
+ else
365
+ value
366
+ end
367
+ end
368
+
369
+ def parse_date(datestring)
370
+ if datestring.include?('Date')
371
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
372
+ original, date, timezone = *date_pattern.match(datestring)
373
+ date = (date.to_i / 1000)
374
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
375
+ elsif /(\d\d\d\d)-(\d\d)/.match(datestring) # handles dates w/out Days: YYYY-MM*-DD
376
+ Time.parse(datestring + '-01').strftime('%Y-%m-%dT%H:%M:%S').to_s
377
+ else # handle date 'types' for small subset of payroll API's
378
+ Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
379
+ end
380
+ end
381
+ end
382
+ end
@@ -0,0 +1,274 @@
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 StatementResponse
19
+ # Xero Identifier of statement
20
+ attr_accessor :statement_id
21
+
22
+ # Start date of statement
23
+ attr_accessor :start_date
24
+
25
+ # End date of statement
26
+ attr_accessor :end_date
27
+
28
+ # Utc date time of when the statement was imported in Xero
29
+ attr_accessor :imported_date_time_utc
30
+
31
+ # Import source of statement (STMTIMPORTSRC/MANUAL, STMTIMPORTSRC/CSV, STMTIMPORTSRC/QIF, STMTIMPORTSRC/OFX, XeroApi)
32
+ attr_accessor :import_source
33
+
34
+ # List of statement lines
35
+ attr_accessor :statement_lines
36
+
37
+ # Attribute mapping from ruby-style variable name to JSON key.
38
+ def self.attribute_map
39
+ {
40
+ :'statement_id' => :'statementId',
41
+ :'start_date' => :'startDate',
42
+ :'end_date' => :'endDate',
43
+ :'imported_date_time_utc' => :'importedDateTimeUtc',
44
+ :'import_source' => :'importSource',
45
+ :'statement_lines' => :'statementLines'
46
+ }
47
+ end
48
+
49
+ # Attribute type mapping.
50
+ def self.openapi_types
51
+ {
52
+ :'statement_id' => :'String',
53
+ :'start_date' => :'DateTime',
54
+ :'end_date' => :'DateTime',
55
+ :'imported_date_time_utc' => :'DateTime',
56
+ :'import_source' => :'String',
57
+ :'statement_lines' => :'Array<StatementLineResponse>'
58
+ }
59
+ end
60
+
61
+ # Initializes the object
62
+ # @param [Hash] attributes Model attributes in the form of hash
63
+ def initialize(attributes = {})
64
+ if (!attributes.is_a?(Hash))
65
+ fail ArgumentError, "The input argument (attributes) must be a hash in `XeroRuby::Finance::StatementResponse` initialize method"
66
+ end
67
+
68
+ # check to see if the attribute exists and convert string to symbol for hash key
69
+ attributes = attributes.each_with_object({}) { |(k, v), h|
70
+ if (!self.class.attribute_map.key?(k.to_sym))
71
+ fail ArgumentError, "`#{k}` is not a valid attribute in `XeroRuby::Finance::StatementResponse`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
72
+ end
73
+ h[k.to_sym] = v
74
+ }
75
+
76
+ if attributes.key?(:'statement_id')
77
+ self.statement_id = attributes[:'statement_id']
78
+ end
79
+
80
+ if attributes.key?(:'start_date')
81
+ self.start_date = attributes[:'start_date']
82
+ end
83
+
84
+ if attributes.key?(:'end_date')
85
+ self.end_date = attributes[:'end_date']
86
+ end
87
+
88
+ if attributes.key?(:'imported_date_time_utc')
89
+ self.imported_date_time_utc = attributes[:'imported_date_time_utc']
90
+ end
91
+
92
+ if attributes.key?(:'import_source')
93
+ self.import_source = attributes[:'import_source']
94
+ end
95
+
96
+ if attributes.key?(:'statement_lines')
97
+ if (value = attributes[:'statement_lines']).is_a?(Array)
98
+ self.statement_lines = value
99
+ end
100
+ end
101
+ end
102
+
103
+ # Show invalid properties with the reasons. Usually used together with valid?
104
+ # @return Array for valid properties with the reasons
105
+ def list_invalid_properties
106
+ invalid_properties = Array.new
107
+ invalid_properties
108
+ end
109
+
110
+ # Check to see if the all the properties in the model are valid
111
+ # @return true if the model is valid
112
+ def valid?
113
+ true
114
+ end
115
+
116
+ # Checks equality by comparing each attribute.
117
+ # @param [Object] Object to be compared
118
+ def ==(o)
119
+ return true if self.equal?(o)
120
+ self.class == o.class &&
121
+ statement_id == o.statement_id &&
122
+ start_date == o.start_date &&
123
+ end_date == o.end_date &&
124
+ imported_date_time_utc == o.imported_date_time_utc &&
125
+ import_source == o.import_source &&
126
+ statement_lines == o.statement_lines
127
+ end
128
+
129
+ # @see the `==` method
130
+ # @param [Object] Object to be compared
131
+ def eql?(o)
132
+ self == o
133
+ end
134
+
135
+ # Calculates hash code according to all attributes.
136
+ # @return [Integer] Hash code
137
+ def hash
138
+ [statement_id, start_date, end_date, imported_date_time_utc, import_source, statement_lines].hash
139
+ end
140
+
141
+ # Builds the object from hash
142
+ # @param [Hash] attributes Model attributes in the form of hash
143
+ # @return [Object] Returns the model itself
144
+ def self.build_from_hash(attributes)
145
+ new.build_from_hash(attributes)
146
+ end
147
+
148
+ # Builds the object from hash
149
+ # @param [Hash] attributes Model attributes in the form of hash
150
+ # @return [Object] Returns the model itself
151
+ def build_from_hash(attributes)
152
+ return nil unless attributes.is_a?(Hash)
153
+ self.class.openapi_types.each_pair do |key, type|
154
+ if type =~ /\AArray<(.*)>/i
155
+ # check to ensure the input is an array given that the attribute
156
+ # is documented as an array but the input is not
157
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
158
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
159
+ end
160
+ elsif !attributes[self.class.attribute_map[key]].nil?
161
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
162
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
163
+ end
164
+
165
+ self
166
+ end
167
+
168
+ # Deserializes the data based on type
169
+ # @param string type Data type
170
+ # @param string value Value to be deserialized
171
+ # @return [Object] Deserialized data
172
+ def _deserialize(type, value)
173
+ case type.to_sym
174
+ when :DateTime
175
+ DateTime.parse(parse_date(value))
176
+ when :Date
177
+ Date.parse(parse_date(value))
178
+ when :String
179
+ value.to_s
180
+ when :Integer
181
+ value.to_i
182
+ when :Float
183
+ value.to_f
184
+ when :BigDecimal
185
+ BigDecimal(value.to_s)
186
+ when :Boolean
187
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
188
+ true
189
+ else
190
+ false
191
+ end
192
+ when :Object
193
+ # generic object (usually a Hash), return directly
194
+ value
195
+ when /\AArray<(?<inner_type>.+)>\z/
196
+ inner_type = Regexp.last_match[:inner_type]
197
+ value.map { |v| _deserialize(inner_type, v) }
198
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
199
+ k_type = Regexp.last_match[:k_type]
200
+ v_type = Regexp.last_match[:v_type]
201
+ {}.tap do |hash|
202
+ value.each do |k, v|
203
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
204
+ end
205
+ end
206
+ else # model
207
+ XeroRuby::Finance.const_get(type).build_from_hash(value)
208
+ end
209
+ end
210
+
211
+ # Returns the string representation of the object
212
+ # @return [String] String presentation of the object
213
+ def to_s
214
+ to_hash.to_s
215
+ end
216
+
217
+ # to_body is an alias to to_hash (backward compatibility)
218
+ # @return [Hash] Returns the object in the form of hash
219
+ def to_body
220
+ to_hash
221
+ end
222
+
223
+ # Returns the object in the form of hash
224
+ # @return [Hash] Returns the object in the form of hash
225
+ def to_hash(downcase: false)
226
+ hash = {}
227
+ self.class.attribute_map.each_pair do |attr, param|
228
+ value = self.send(attr)
229
+ next if value.nil?
230
+ key = downcase ? attr : param
231
+ hash[key] = _to_hash(value, downcase: downcase)
232
+ end
233
+ hash
234
+ end
235
+
236
+ # Returns the object in the form of hash with snake_case
237
+ def to_attributes
238
+ to_hash(downcase: true)
239
+ end
240
+
241
+ # Outputs non-array value in the form of hash
242
+ # For object, use to_hash. Otherwise, just return the value
243
+ # @param [Object] value Any valid value
244
+ # @return [Hash] Returns the value in the form of hash
245
+ def _to_hash(value, downcase: false)
246
+ if value.is_a?(Array)
247
+ value.map do |v|
248
+ v.to_hash(downcase: downcase)
249
+ end
250
+ elsif value.is_a?(Hash)
251
+ {}.tap do |hash|
252
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
253
+ end
254
+ elsif value.respond_to? :to_hash
255
+ value.to_hash(downcase: downcase)
256
+ else
257
+ value
258
+ end
259
+ end
260
+
261
+ def parse_date(datestring)
262
+ if datestring.include?('Date')
263
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
264
+ original, date, timezone = *date_pattern.match(datestring)
265
+ date = (date.to_i / 1000)
266
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
267
+ elsif /(\d\d\d\d)-(\d\d)/.match(datestring) # handles dates w/out Days: YYYY-MM*-DD
268
+ Time.parse(datestring + '-01').strftime('%Y-%m-%dT%H:%M:%S').to_s
269
+ else # handle date 'types' for small subset of payroll API's
270
+ Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
271
+ end
272
+ end
273
+ end
274
+ end