xero-ruby 2.10.0 → 3.1.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 (398) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +6 -6
  3. data/lib/xero-ruby.rb +3 -0
  4. data/lib/xero-ruby/api/accounting_api.rb +305 -149
  5. data/lib/xero-ruby/api_client.rb +13 -6
  6. data/lib/xero-ruby/models/accounting/account.rb +11 -7
  7. data/lib/xero-ruby/models/accounting/accounts.rb +11 -7
  8. data/lib/xero-ruby/models/accounting/accounts_payable.rb +11 -7
  9. data/lib/xero-ruby/models/accounting/accounts_receivable.rb +11 -7
  10. data/lib/xero-ruby/models/accounting/action.rb +11 -7
  11. data/lib/xero-ruby/models/accounting/actions.rb +11 -7
  12. data/lib/xero-ruby/models/accounting/address.rb +11 -7
  13. data/lib/xero-ruby/models/accounting/address_for_organisation.rb +11 -7
  14. data/lib/xero-ruby/models/accounting/allocation.rb +11 -7
  15. data/lib/xero-ruby/models/accounting/allocations.rb +11 -7
  16. data/lib/xero-ruby/models/accounting/attachment.rb +11 -7
  17. data/lib/xero-ruby/models/accounting/attachments.rb +11 -7
  18. data/lib/xero-ruby/models/accounting/balance_details.rb +11 -7
  19. data/lib/xero-ruby/models/accounting/balances.rb +11 -7
  20. data/lib/xero-ruby/models/accounting/bank_transaction.rb +11 -7
  21. data/lib/xero-ruby/models/accounting/bank_transactions.rb +11 -7
  22. data/lib/xero-ruby/models/accounting/bank_transfer.rb +11 -7
  23. data/lib/xero-ruby/models/accounting/bank_transfers.rb +11 -7
  24. data/lib/xero-ruby/models/accounting/batch_payment.rb +11 -7
  25. data/lib/xero-ruby/models/accounting/batch_payment_details.rb +11 -7
  26. data/lib/xero-ruby/models/accounting/batch_payments.rb +11 -7
  27. data/lib/xero-ruby/models/accounting/bill.rb +11 -7
  28. data/lib/xero-ruby/models/accounting/branding_theme.rb +11 -7
  29. data/lib/xero-ruby/models/accounting/branding_themes.rb +11 -7
  30. data/lib/xero-ruby/models/accounting/budget.rb +321 -0
  31. data/lib/xero-ruby/models/accounting/budget_lines.rb +265 -0
  32. data/lib/xero-ruby/models/accounting/budgets.rb +222 -0
  33. data/lib/xero-ruby/models/accounting/cis_org_setting.rb +11 -7
  34. data/lib/xero-ruby/models/accounting/cis_org_settings.rb +11 -7
  35. data/lib/xero-ruby/models/accounting/cis_setting.rb +11 -7
  36. data/lib/xero-ruby/models/accounting/cis_settings.rb +11 -7
  37. data/lib/xero-ruby/models/accounting/contact.rb +11 -7
  38. data/lib/xero-ruby/models/accounting/contact_group.rb +11 -7
  39. data/lib/xero-ruby/models/accounting/contact_groups.rb +11 -7
  40. data/lib/xero-ruby/models/accounting/contact_person.rb +11 -7
  41. data/lib/xero-ruby/models/accounting/contacts.rb +11 -7
  42. data/lib/xero-ruby/models/accounting/conversion_balances.rb +11 -7
  43. data/lib/xero-ruby/models/accounting/conversion_date.rb +11 -7
  44. data/lib/xero-ruby/models/accounting/credit_note.rb +11 -7
  45. data/lib/xero-ruby/models/accounting/credit_notes.rb +11 -7
  46. data/lib/xero-ruby/models/accounting/currencies.rb +11 -7
  47. data/lib/xero-ruby/models/accounting/currency.rb +11 -7
  48. data/lib/xero-ruby/models/accounting/element.rb +11 -7
  49. data/lib/xero-ruby/models/accounting/employee.rb +11 -7
  50. data/lib/xero-ruby/models/accounting/employees.rb +11 -7
  51. data/lib/xero-ruby/models/accounting/error.rb +11 -7
  52. data/lib/xero-ruby/models/accounting/expense_claim.rb +11 -7
  53. data/lib/xero-ruby/models/accounting/expense_claims.rb +11 -7
  54. data/lib/xero-ruby/models/accounting/external_link.rb +11 -7
  55. data/lib/xero-ruby/models/accounting/history_record.rb +11 -7
  56. data/lib/xero-ruby/models/accounting/history_records.rb +11 -7
  57. data/lib/xero-ruby/models/accounting/import_summary.rb +11 -7
  58. data/lib/xero-ruby/models/accounting/import_summary_accounts.rb +11 -7
  59. data/lib/xero-ruby/models/accounting/import_summary_object.rb +11 -7
  60. data/lib/xero-ruby/models/accounting/import_summary_organisation.rb +11 -7
  61. data/lib/xero-ruby/models/accounting/invoice.rb +11 -7
  62. data/lib/xero-ruby/models/accounting/invoice_reminder.rb +11 -7
  63. data/lib/xero-ruby/models/accounting/invoice_reminders.rb +11 -7
  64. data/lib/xero-ruby/models/accounting/invoices.rb +11 -7
  65. data/lib/xero-ruby/models/accounting/item.rb +11 -7
  66. data/lib/xero-ruby/models/accounting/items.rb +11 -7
  67. data/lib/xero-ruby/models/accounting/journal.rb +11 -7
  68. data/lib/xero-ruby/models/accounting/journal_line.rb +11 -7
  69. data/lib/xero-ruby/models/accounting/journals.rb +11 -7
  70. data/lib/xero-ruby/models/accounting/line_item.rb +22 -8
  71. data/lib/xero-ruby/models/accounting/line_item_tracking.rb +11 -7
  72. data/lib/xero-ruby/models/accounting/linked_transaction.rb +11 -7
  73. data/lib/xero-ruby/models/accounting/linked_transactions.rb +11 -7
  74. data/lib/xero-ruby/models/accounting/manual_journal.rb +11 -7
  75. data/lib/xero-ruby/models/accounting/manual_journal_line.rb +11 -7
  76. data/lib/xero-ruby/models/accounting/manual_journals.rb +11 -7
  77. data/lib/xero-ruby/models/accounting/online_invoice.rb +11 -7
  78. data/lib/xero-ruby/models/accounting/online_invoices.rb +11 -7
  79. data/lib/xero-ruby/models/accounting/organisation.rb +11 -7
  80. data/lib/xero-ruby/models/accounting/organisations.rb +11 -7
  81. data/lib/xero-ruby/models/accounting/overpayment.rb +11 -7
  82. data/lib/xero-ruby/models/accounting/overpayments.rb +11 -7
  83. data/lib/xero-ruby/models/accounting/payment.rb +11 -7
  84. data/lib/xero-ruby/models/accounting/payment_delete.rb +11 -7
  85. data/lib/xero-ruby/models/accounting/payment_service.rb +11 -7
  86. data/lib/xero-ruby/models/accounting/payment_services.rb +11 -7
  87. data/lib/xero-ruby/models/accounting/payment_term.rb +11 -7
  88. data/lib/xero-ruby/models/accounting/payments.rb +11 -7
  89. data/lib/xero-ruby/models/accounting/phone.rb +11 -7
  90. data/lib/xero-ruby/models/accounting/prepayment.rb +24 -8
  91. data/lib/xero-ruby/models/accounting/prepayments.rb +11 -7
  92. data/lib/xero-ruby/models/accounting/purchase.rb +11 -7
  93. data/lib/xero-ruby/models/accounting/purchase_order.rb +11 -7
  94. data/lib/xero-ruby/models/accounting/purchase_orders.rb +11 -7
  95. data/lib/xero-ruby/models/accounting/quote.rb +11 -7
  96. data/lib/xero-ruby/models/accounting/quotes.rb +11 -7
  97. data/lib/xero-ruby/models/accounting/receipt.rb +11 -7
  98. data/lib/xero-ruby/models/accounting/receipts.rb +11 -7
  99. data/lib/xero-ruby/models/accounting/repeating_invoice.rb +11 -7
  100. data/lib/xero-ruby/models/accounting/repeating_invoices.rb +11 -7
  101. data/lib/xero-ruby/models/accounting/report.rb +12 -18
  102. data/lib/xero-ruby/models/accounting/report_attribute.rb +11 -7
  103. data/lib/xero-ruby/models/accounting/report_cell.rb +11 -7
  104. data/lib/xero-ruby/models/accounting/report_fields.rb +11 -7
  105. data/lib/xero-ruby/models/accounting/report_row.rb +11 -7
  106. data/lib/xero-ruby/models/accounting/report_rows.rb +11 -7
  107. data/lib/xero-ruby/models/accounting/report_with_row.rb +12 -8
  108. data/lib/xero-ruby/models/accounting/report_with_rows.rb +11 -7
  109. data/lib/xero-ruby/models/accounting/reports.rb +11 -7
  110. data/lib/xero-ruby/models/accounting/request_empty.rb +11 -7
  111. data/lib/xero-ruby/models/accounting/sales_tracking_category.rb +11 -7
  112. data/lib/xero-ruby/models/accounting/schedule.rb +11 -7
  113. data/lib/xero-ruby/models/accounting/setup.rb +11 -7
  114. data/lib/xero-ruby/models/accounting/tax_component.rb +11 -7
  115. data/lib/xero-ruby/models/accounting/tax_rate.rb +11 -7
  116. data/lib/xero-ruby/models/accounting/tax_rates.rb +11 -7
  117. data/lib/xero-ruby/models/accounting/ten_ninety_nine_contact.rb +11 -7
  118. data/lib/xero-ruby/models/accounting/tracking_categories.rb +11 -7
  119. data/lib/xero-ruby/models/accounting/tracking_category.rb +11 -7
  120. data/lib/xero-ruby/models/accounting/tracking_option.rb +11 -7
  121. data/lib/xero-ruby/models/accounting/tracking_options.rb +11 -7
  122. data/lib/xero-ruby/models/accounting/user.rb +11 -7
  123. data/lib/xero-ruby/models/accounting/users.rb +11 -7
  124. data/lib/xero-ruby/models/accounting/validation_error.rb +11 -7
  125. data/lib/xero-ruby/models/assets/asset.rb +11 -7
  126. data/lib/xero-ruby/models/assets/asset_type.rb +11 -7
  127. data/lib/xero-ruby/models/assets/assets.rb +11 -7
  128. data/lib/xero-ruby/models/assets/book_depreciation_detail.rb +11 -7
  129. data/lib/xero-ruby/models/assets/book_depreciation_setting.rb +11 -7
  130. data/lib/xero-ruby/models/assets/error.rb +11 -7
  131. data/lib/xero-ruby/models/assets/field_validation_errors_element.rb +11 -7
  132. data/lib/xero-ruby/models/assets/pagination.rb +11 -7
  133. data/lib/xero-ruby/models/assets/resource_validation_errors_element.rb +11 -7
  134. data/lib/xero-ruby/models/assets/setting.rb +11 -7
  135. data/lib/xero-ruby/models/files/association.rb +11 -7
  136. data/lib/xero-ruby/models/files/file_object.rb +11 -7
  137. data/lib/xero-ruby/models/files/files.rb +11 -7
  138. data/lib/xero-ruby/models/files/folder.rb +11 -7
  139. data/lib/xero-ruby/models/files/folders.rb +11 -7
  140. data/lib/xero-ruby/models/files/upload_object.rb +11 -7
  141. data/lib/xero-ruby/models/files/user.rb +11 -7
  142. data/lib/xero-ruby/models/payroll_au/account.rb +11 -7
  143. data/lib/xero-ruby/models/payroll_au/api_exception.rb +11 -7
  144. data/lib/xero-ruby/models/payroll_au/bank_account.rb +11 -7
  145. data/lib/xero-ruby/models/payroll_au/deduction_line.rb +11 -7
  146. data/lib/xero-ruby/models/payroll_au/deduction_type.rb +11 -7
  147. data/lib/xero-ruby/models/payroll_au/earnings_line.rb +11 -7
  148. data/lib/xero-ruby/models/payroll_au/earnings_rate.rb +11 -7
  149. data/lib/xero-ruby/models/payroll_au/employee.rb +11 -7
  150. data/lib/xero-ruby/models/payroll_au/employees.rb +11 -7
  151. data/lib/xero-ruby/models/payroll_au/home_address.rb +11 -7
  152. data/lib/xero-ruby/models/payroll_au/leave_accrual_line.rb +11 -7
  153. data/lib/xero-ruby/models/payroll_au/leave_application.rb +11 -7
  154. data/lib/xero-ruby/models/payroll_au/leave_applications.rb +11 -7
  155. data/lib/xero-ruby/models/payroll_au/leave_balance.rb +11 -7
  156. data/lib/xero-ruby/models/payroll_au/leave_earnings_line.rb +11 -7
  157. data/lib/xero-ruby/models/payroll_au/leave_line.rb +11 -7
  158. data/lib/xero-ruby/models/payroll_au/leave_lines.rb +11 -7
  159. data/lib/xero-ruby/models/payroll_au/leave_period.rb +11 -7
  160. data/lib/xero-ruby/models/payroll_au/leave_type.rb +11 -7
  161. data/lib/xero-ruby/models/payroll_au/opening_balances.rb +11 -7
  162. data/lib/xero-ruby/models/payroll_au/pay_item.rb +11 -7
  163. data/lib/xero-ruby/models/payroll_au/pay_items.rb +11 -7
  164. data/lib/xero-ruby/models/payroll_au/pay_run.rb +11 -7
  165. data/lib/xero-ruby/models/payroll_au/pay_runs.rb +11 -7
  166. data/lib/xero-ruby/models/payroll_au/pay_template.rb +11 -7
  167. data/lib/xero-ruby/models/payroll_au/payroll_calendar.rb +11 -7
  168. data/lib/xero-ruby/models/payroll_au/payroll_calendars.rb +11 -7
  169. data/lib/xero-ruby/models/payroll_au/payslip.rb +11 -7
  170. data/lib/xero-ruby/models/payroll_au/payslip_lines.rb +11 -7
  171. data/lib/xero-ruby/models/payroll_au/payslip_object.rb +11 -7
  172. data/lib/xero-ruby/models/payroll_au/payslip_summary.rb +11 -7
  173. data/lib/xero-ruby/models/payroll_au/payslips.rb +11 -7
  174. data/lib/xero-ruby/models/payroll_au/reimbursement_line.rb +11 -7
  175. data/lib/xero-ruby/models/payroll_au/reimbursement_lines.rb +11 -7
  176. data/lib/xero-ruby/models/payroll_au/reimbursement_type.rb +11 -7
  177. data/lib/xero-ruby/models/payroll_au/settings.rb +11 -7
  178. data/lib/xero-ruby/models/payroll_au/settings_object.rb +11 -7
  179. data/lib/xero-ruby/models/payroll_au/settings_tracking_categories.rb +11 -7
  180. data/lib/xero-ruby/models/payroll_au/settings_tracking_categories_employee_groups.rb +11 -7
  181. data/lib/xero-ruby/models/payroll_au/settings_tracking_categories_timesheet_categories.rb +11 -7
  182. data/lib/xero-ruby/models/payroll_au/super_fund.rb +11 -7
  183. data/lib/xero-ruby/models/payroll_au/super_fund_product.rb +11 -7
  184. data/lib/xero-ruby/models/payroll_au/super_fund_products.rb +11 -7
  185. data/lib/xero-ruby/models/payroll_au/super_funds.rb +11 -7
  186. data/lib/xero-ruby/models/payroll_au/super_line.rb +11 -7
  187. data/lib/xero-ruby/models/payroll_au/super_membership.rb +11 -7
  188. data/lib/xero-ruby/models/payroll_au/superannuation_line.rb +11 -7
  189. data/lib/xero-ruby/models/payroll_au/tax_declaration.rb +11 -7
  190. data/lib/xero-ruby/models/payroll_au/tax_line.rb +11 -7
  191. data/lib/xero-ruby/models/payroll_au/timesheet.rb +11 -7
  192. data/lib/xero-ruby/models/payroll_au/timesheet_line.rb +11 -7
  193. data/lib/xero-ruby/models/payroll_au/timesheet_object.rb +11 -7
  194. data/lib/xero-ruby/models/payroll_au/timesheets.rb +11 -7
  195. data/lib/xero-ruby/models/payroll_au/validation_error.rb +11 -7
  196. data/lib/xero-ruby/models/payroll_nz/account.rb +11 -7
  197. data/lib/xero-ruby/models/payroll_nz/accounts.rb +11 -7
  198. data/lib/xero-ruby/models/payroll_nz/address.rb +11 -7
  199. data/lib/xero-ruby/models/payroll_nz/bank_account.rb +11 -7
  200. data/lib/xero-ruby/models/payroll_nz/benefit.rb +11 -7
  201. data/lib/xero-ruby/models/payroll_nz/deduction.rb +11 -7
  202. data/lib/xero-ruby/models/payroll_nz/deduction_line.rb +11 -7
  203. data/lib/xero-ruby/models/payroll_nz/deduction_object.rb +11 -7
  204. data/lib/xero-ruby/models/payroll_nz/deductions.rb +11 -7
  205. data/lib/xero-ruby/models/payroll_nz/earnings_line.rb +11 -7
  206. data/lib/xero-ruby/models/payroll_nz/earnings_order.rb +11 -7
  207. data/lib/xero-ruby/models/payroll_nz/earnings_order_object.rb +11 -7
  208. data/lib/xero-ruby/models/payroll_nz/earnings_orders.rb +11 -7
  209. data/lib/xero-ruby/models/payroll_nz/earnings_rate.rb +11 -7
  210. data/lib/xero-ruby/models/payroll_nz/earnings_rate_object.rb +11 -7
  211. data/lib/xero-ruby/models/payroll_nz/earnings_rates.rb +11 -7
  212. data/lib/xero-ruby/models/payroll_nz/earnings_template.rb +11 -7
  213. data/lib/xero-ruby/models/payroll_nz/earnings_template_object.rb +11 -7
  214. data/lib/xero-ruby/models/payroll_nz/employee.rb +11 -7
  215. data/lib/xero-ruby/models/payroll_nz/employee_earnings_templates.rb +11 -7
  216. data/lib/xero-ruby/models/payroll_nz/employee_leave.rb +11 -7
  217. data/lib/xero-ruby/models/payroll_nz/employee_leave_balance.rb +11 -7
  218. data/lib/xero-ruby/models/payroll_nz/employee_leave_balances.rb +11 -7
  219. data/lib/xero-ruby/models/payroll_nz/employee_leave_object.rb +11 -7
  220. data/lib/xero-ruby/models/payroll_nz/employee_leave_setup.rb +11 -7
  221. data/lib/xero-ruby/models/payroll_nz/employee_leave_setup_object.rb +11 -7
  222. data/lib/xero-ruby/models/payroll_nz/employee_leave_type.rb +11 -7
  223. data/lib/xero-ruby/models/payroll_nz/employee_leave_type_object.rb +11 -7
  224. data/lib/xero-ruby/models/payroll_nz/employee_leave_types.rb +11 -7
  225. data/lib/xero-ruby/models/payroll_nz/employee_leaves.rb +11 -7
  226. data/lib/xero-ruby/models/payroll_nz/employee_object.rb +11 -7
  227. data/lib/xero-ruby/models/payroll_nz/employee_opening_balance.rb +11 -7
  228. data/lib/xero-ruby/models/payroll_nz/employee_opening_balances_object.rb +11 -7
  229. data/lib/xero-ruby/models/payroll_nz/employee_pay_template.rb +11 -7
  230. data/lib/xero-ruby/models/payroll_nz/employee_pay_template_object.rb +11 -7
  231. data/lib/xero-ruby/models/payroll_nz/employee_pay_templates.rb +11 -7
  232. data/lib/xero-ruby/models/payroll_nz/employee_statutory_leave_balance.rb +11 -7
  233. data/lib/xero-ruby/models/payroll_nz/employee_statutory_leave_balance_object.rb +11 -7
  234. data/lib/xero-ruby/models/payroll_nz/employee_statutory_leave_summary.rb +11 -7
  235. data/lib/xero-ruby/models/payroll_nz/employee_statutory_leaves_summaries.rb +11 -7
  236. data/lib/xero-ruby/models/payroll_nz/employee_statutory_sick_leave.rb +11 -7
  237. data/lib/xero-ruby/models/payroll_nz/employee_statutory_sick_leave_object.rb +11 -7
  238. data/lib/xero-ruby/models/payroll_nz/employee_statutory_sick_leaves.rb +11 -7
  239. data/lib/xero-ruby/models/payroll_nz/employee_tax.rb +11 -7
  240. data/lib/xero-ruby/models/payroll_nz/employee_tax_object.rb +11 -7
  241. data/lib/xero-ruby/models/payroll_nz/employees.rb +11 -7
  242. data/lib/xero-ruby/models/payroll_nz/employment.rb +11 -7
  243. data/lib/xero-ruby/models/payroll_nz/employment_object.rb +11 -7
  244. data/lib/xero-ruby/models/payroll_nz/gross_earnings_history.rb +11 -7
  245. data/lib/xero-ruby/models/payroll_nz/invalid_field.rb +11 -7
  246. data/lib/xero-ruby/models/payroll_nz/leave_accrual_line.rb +11 -7
  247. data/lib/xero-ruby/models/payroll_nz/leave_earnings_line.rb +11 -7
  248. data/lib/xero-ruby/models/payroll_nz/leave_period.rb +11 -7
  249. data/lib/xero-ruby/models/payroll_nz/leave_periods.rb +11 -7
  250. data/lib/xero-ruby/models/payroll_nz/leave_type.rb +11 -7
  251. data/lib/xero-ruby/models/payroll_nz/leave_type_object.rb +11 -7
  252. data/lib/xero-ruby/models/payroll_nz/leave_types.rb +11 -7
  253. data/lib/xero-ruby/models/payroll_nz/pagination.rb +11 -7
  254. data/lib/xero-ruby/models/payroll_nz/pay_run.rb +11 -7
  255. data/lib/xero-ruby/models/payroll_nz/pay_run_calendar.rb +11 -7
  256. data/lib/xero-ruby/models/payroll_nz/pay_run_calendar_object.rb +11 -7
  257. data/lib/xero-ruby/models/payroll_nz/pay_run_calendars.rb +11 -7
  258. data/lib/xero-ruby/models/payroll_nz/pay_run_object.rb +11 -7
  259. data/lib/xero-ruby/models/payroll_nz/pay_runs.rb +11 -7
  260. data/lib/xero-ruby/models/payroll_nz/pay_slip.rb +11 -7
  261. data/lib/xero-ruby/models/payroll_nz/pay_slip_object.rb +11 -7
  262. data/lib/xero-ruby/models/payroll_nz/pay_slips.rb +11 -7
  263. data/lib/xero-ruby/models/payroll_nz/payment_line.rb +11 -7
  264. data/lib/xero-ruby/models/payroll_nz/payment_method.rb +11 -7
  265. data/lib/xero-ruby/models/payroll_nz/payment_method_object.rb +11 -7
  266. data/lib/xero-ruby/models/payroll_nz/problem.rb +11 -7
  267. data/lib/xero-ruby/models/payroll_nz/reimbursement.rb +11 -7
  268. data/lib/xero-ruby/models/payroll_nz/reimbursement_line.rb +11 -7
  269. data/lib/xero-ruby/models/payroll_nz/reimbursement_object.rb +11 -7
  270. data/lib/xero-ruby/models/payroll_nz/reimbursements.rb +11 -7
  271. data/lib/xero-ruby/models/payroll_nz/salary_and_wage.rb +11 -7
  272. data/lib/xero-ruby/models/payroll_nz/salary_and_wage_object.rb +11 -7
  273. data/lib/xero-ruby/models/payroll_nz/salary_and_wages.rb +11 -7
  274. data/lib/xero-ruby/models/payroll_nz/settings.rb +11 -7
  275. data/lib/xero-ruby/models/payroll_nz/statutory_deduction.rb +11 -7
  276. data/lib/xero-ruby/models/payroll_nz/statutory_deduction_line.rb +11 -7
  277. data/lib/xero-ruby/models/payroll_nz/statutory_deduction_object.rb +11 -7
  278. data/lib/xero-ruby/models/payroll_nz/statutory_deductions.rb +11 -7
  279. data/lib/xero-ruby/models/payroll_nz/superannuation_line.rb +11 -7
  280. data/lib/xero-ruby/models/payroll_nz/superannuation_object.rb +11 -7
  281. data/lib/xero-ruby/models/payroll_nz/superannuations.rb +11 -7
  282. data/lib/xero-ruby/models/payroll_nz/tax_line.rb +11 -7
  283. data/lib/xero-ruby/models/payroll_nz/tax_settings.rb +11 -7
  284. data/lib/xero-ruby/models/payroll_nz/timesheet.rb +11 -7
  285. data/lib/xero-ruby/models/payroll_nz/timesheet_earnings_line.rb +11 -7
  286. data/lib/xero-ruby/models/payroll_nz/timesheet_line.rb +11 -7
  287. data/lib/xero-ruby/models/payroll_nz/timesheet_line_object.rb +11 -7
  288. data/lib/xero-ruby/models/payroll_nz/timesheet_object.rb +11 -7
  289. data/lib/xero-ruby/models/payroll_nz/timesheets.rb +11 -7
  290. data/lib/xero-ruby/models/payroll_nz/tracking_categories.rb +11 -7
  291. data/lib/xero-ruby/models/payroll_nz/tracking_category.rb +11 -7
  292. data/lib/xero-ruby/models/payroll_uk/account.rb +11 -7
  293. data/lib/xero-ruby/models/payroll_uk/accounts.rb +11 -7
  294. data/lib/xero-ruby/models/payroll_uk/address.rb +11 -7
  295. data/lib/xero-ruby/models/payroll_uk/bank_account.rb +11 -7
  296. data/lib/xero-ruby/models/payroll_uk/benefit.rb +11 -7
  297. data/lib/xero-ruby/models/payroll_uk/benefit_line.rb +11 -7
  298. data/lib/xero-ruby/models/payroll_uk/benefit_object.rb +11 -7
  299. data/lib/xero-ruby/models/payroll_uk/benefits.rb +11 -7
  300. data/lib/xero-ruby/models/payroll_uk/court_order_line.rb +11 -7
  301. data/lib/xero-ruby/models/payroll_uk/deduction.rb +11 -7
  302. data/lib/xero-ruby/models/payroll_uk/deduction_line.rb +11 -7
  303. data/lib/xero-ruby/models/payroll_uk/deduction_object.rb +11 -7
  304. data/lib/xero-ruby/models/payroll_uk/deductions.rb +11 -7
  305. data/lib/xero-ruby/models/payroll_uk/earnings_line.rb +11 -7
  306. data/lib/xero-ruby/models/payroll_uk/earnings_order.rb +11 -7
  307. data/lib/xero-ruby/models/payroll_uk/earnings_order_object.rb +11 -7
  308. data/lib/xero-ruby/models/payroll_uk/earnings_orders.rb +11 -7
  309. data/lib/xero-ruby/models/payroll_uk/earnings_rate.rb +11 -7
  310. data/lib/xero-ruby/models/payroll_uk/earnings_rate_object.rb +11 -7
  311. data/lib/xero-ruby/models/payroll_uk/earnings_rates.rb +11 -7
  312. data/lib/xero-ruby/models/payroll_uk/earnings_template.rb +11 -7
  313. data/lib/xero-ruby/models/payroll_uk/earnings_template_object.rb +11 -7
  314. data/lib/xero-ruby/models/payroll_uk/employee.rb +11 -7
  315. data/lib/xero-ruby/models/payroll_uk/employee_leave.rb +11 -7
  316. data/lib/xero-ruby/models/payroll_uk/employee_leave_balance.rb +11 -7
  317. data/lib/xero-ruby/models/payroll_uk/employee_leave_balances.rb +11 -7
  318. data/lib/xero-ruby/models/payroll_uk/employee_leave_object.rb +11 -7
  319. data/lib/xero-ruby/models/payroll_uk/employee_leave_type.rb +11 -7
  320. data/lib/xero-ruby/models/payroll_uk/employee_leave_type_object.rb +11 -7
  321. data/lib/xero-ruby/models/payroll_uk/employee_leave_types.rb +11 -7
  322. data/lib/xero-ruby/models/payroll_uk/employee_leaves.rb +11 -7
  323. data/lib/xero-ruby/models/payroll_uk/employee_object.rb +11 -7
  324. data/lib/xero-ruby/models/payroll_uk/employee_opening_balances.rb +11 -7
  325. data/lib/xero-ruby/models/payroll_uk/employee_opening_balances_object.rb +11 -7
  326. data/lib/xero-ruby/models/payroll_uk/employee_pay_template.rb +11 -7
  327. data/lib/xero-ruby/models/payroll_uk/employee_pay_template_object.rb +11 -7
  328. data/lib/xero-ruby/models/payroll_uk/employee_pay_templates.rb +11 -7
  329. data/lib/xero-ruby/models/payroll_uk/employee_statutory_leave_balance.rb +11 -7
  330. data/lib/xero-ruby/models/payroll_uk/employee_statutory_leave_balance_object.rb +11 -7
  331. data/lib/xero-ruby/models/payroll_uk/employee_statutory_leave_summary.rb +11 -7
  332. data/lib/xero-ruby/models/payroll_uk/employee_statutory_leaves_summaries.rb +11 -7
  333. data/lib/xero-ruby/models/payroll_uk/employee_statutory_sick_leave.rb +11 -7
  334. data/lib/xero-ruby/models/payroll_uk/employee_statutory_sick_leave_object.rb +11 -7
  335. data/lib/xero-ruby/models/payroll_uk/employee_statutory_sick_leaves.rb +11 -7
  336. data/lib/xero-ruby/models/payroll_uk/employee_tax.rb +11 -7
  337. data/lib/xero-ruby/models/payroll_uk/employee_tax_object.rb +11 -7
  338. data/lib/xero-ruby/models/payroll_uk/employees.rb +11 -7
  339. data/lib/xero-ruby/models/payroll_uk/employment.rb +11 -7
  340. data/lib/xero-ruby/models/payroll_uk/employment_object.rb +11 -7
  341. data/lib/xero-ruby/models/payroll_uk/invalid_field.rb +11 -7
  342. data/lib/xero-ruby/models/payroll_uk/leave_accrual_line.rb +11 -7
  343. data/lib/xero-ruby/models/payroll_uk/leave_earnings_line.rb +11 -7
  344. data/lib/xero-ruby/models/payroll_uk/leave_period.rb +11 -7
  345. data/lib/xero-ruby/models/payroll_uk/leave_periods.rb +11 -7
  346. data/lib/xero-ruby/models/payroll_uk/leave_type.rb +11 -7
  347. data/lib/xero-ruby/models/payroll_uk/leave_type_object.rb +11 -7
  348. data/lib/xero-ruby/models/payroll_uk/leave_types.rb +11 -7
  349. data/lib/xero-ruby/models/payroll_uk/pagination.rb +11 -7
  350. data/lib/xero-ruby/models/payroll_uk/pay_run.rb +11 -7
  351. data/lib/xero-ruby/models/payroll_uk/pay_run_calendar.rb +11 -7
  352. data/lib/xero-ruby/models/payroll_uk/pay_run_calendar_object.rb +11 -7
  353. data/lib/xero-ruby/models/payroll_uk/pay_run_calendars.rb +11 -7
  354. data/lib/xero-ruby/models/payroll_uk/pay_run_object.rb +11 -7
  355. data/lib/xero-ruby/models/payroll_uk/pay_runs.rb +11 -7
  356. data/lib/xero-ruby/models/payroll_uk/payment_line.rb +11 -7
  357. data/lib/xero-ruby/models/payroll_uk/payment_method.rb +11 -7
  358. data/lib/xero-ruby/models/payroll_uk/payment_method_object.rb +11 -7
  359. data/lib/xero-ruby/models/payroll_uk/payslip.rb +11 -7
  360. data/lib/xero-ruby/models/payroll_uk/payslip_object.rb +11 -7
  361. data/lib/xero-ruby/models/payroll_uk/payslips.rb +11 -7
  362. data/lib/xero-ruby/models/payroll_uk/problem.rb +11 -7
  363. data/lib/xero-ruby/models/payroll_uk/reimbursement.rb +11 -7
  364. data/lib/xero-ruby/models/payroll_uk/reimbursement_line.rb +11 -7
  365. data/lib/xero-ruby/models/payroll_uk/reimbursement_object.rb +11 -7
  366. data/lib/xero-ruby/models/payroll_uk/reimbursements.rb +11 -7
  367. data/lib/xero-ruby/models/payroll_uk/salary_and_wage.rb +11 -7
  368. data/lib/xero-ruby/models/payroll_uk/salary_and_wage_object.rb +11 -7
  369. data/lib/xero-ruby/models/payroll_uk/salary_and_wages.rb +11 -7
  370. data/lib/xero-ruby/models/payroll_uk/settings.rb +11 -7
  371. data/lib/xero-ruby/models/payroll_uk/statutory_deduction.rb +11 -7
  372. data/lib/xero-ruby/models/payroll_uk/tax_line.rb +11 -7
  373. data/lib/xero-ruby/models/payroll_uk/timesheet.rb +11 -7
  374. data/lib/xero-ruby/models/payroll_uk/timesheet_earnings_line.rb +11 -7
  375. data/lib/xero-ruby/models/payroll_uk/timesheet_line.rb +11 -7
  376. data/lib/xero-ruby/models/payroll_uk/timesheet_line_object.rb +11 -7
  377. data/lib/xero-ruby/models/payroll_uk/timesheet_object.rb +11 -7
  378. data/lib/xero-ruby/models/payroll_uk/timesheets.rb +11 -7
  379. data/lib/xero-ruby/models/payroll_uk/tracking_categories.rb +11 -7
  380. data/lib/xero-ruby/models/payroll_uk/tracking_category.rb +11 -7
  381. data/lib/xero-ruby/models/projects/amount.rb +11 -7
  382. data/lib/xero-ruby/models/projects/error.rb +11 -7
  383. data/lib/xero-ruby/models/projects/pagination.rb +11 -7
  384. data/lib/xero-ruby/models/projects/project.rb +11 -7
  385. data/lib/xero-ruby/models/projects/project_create_or_update.rb +11 -7
  386. data/lib/xero-ruby/models/projects/project_patch.rb +11 -7
  387. data/lib/xero-ruby/models/projects/project_user.rb +11 -7
  388. data/lib/xero-ruby/models/projects/project_users.rb +11 -7
  389. data/lib/xero-ruby/models/projects/projects.rb +11 -7
  390. data/lib/xero-ruby/models/projects/task.rb +11 -7
  391. data/lib/xero-ruby/models/projects/task_create_or_update.rb +11 -7
  392. data/lib/xero-ruby/models/projects/tasks.rb +11 -7
  393. data/lib/xero-ruby/models/projects/time_entries.rb +11 -7
  394. data/lib/xero-ruby/models/projects/time_entry.rb +11 -7
  395. data/lib/xero-ruby/models/projects/time_entry_create_or_update.rb +11 -7
  396. data/lib/xero-ruby/version.rb +2 -2
  397. data/spec/helper_methods_spec.rb +28 -0
  398. metadata +9 -6
@@ -214,7 +214,7 @@ module XeroRuby::PayrollAu
214
214
  value = self.send(attr)
215
215
  next if value.nil?
216
216
  key = downcase ? attr : param
217
- hash[key] = _to_hash(value)
217
+ hash[key] = _to_hash(value, downcase: downcase)
218
218
  end
219
219
  hash
220
220
  end
@@ -228,15 +228,17 @@ module XeroRuby::PayrollAu
228
228
  # For object, use to_hash. Otherwise, just return the value
229
229
  # @param [Object] value Any valid value
230
230
  # @return [Hash] Returns the value in the form of hash
231
- def _to_hash(value)
231
+ def _to_hash(value, downcase: false)
232
232
  if value.is_a?(Array)
233
- value.compact.map { |v| _to_hash(v) }
233
+ value.map do |v|
234
+ v.to_hash(downcase: downcase)
235
+ end
234
236
  elsif value.is_a?(Hash)
235
237
  {}.tap do |hash|
236
- value.each { |k, v| hash[k] = _to_hash(v) }
238
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
237
239
  end
238
240
  elsif value.respond_to? :to_hash
239
- value.to_hash
241
+ value.to_hash(downcase: downcase)
240
242
  else
241
243
  value
242
244
  end
@@ -244,8 +246,10 @@ module XeroRuby::PayrollAu
244
246
 
245
247
  def parse_date(datestring)
246
248
  if datestring.include?('Date')
247
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
248
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
249
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
250
+ original, date, timezone = *date_pattern.match(datestring)
251
+ date = (date.to_i / 1000)
252
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
249
253
  else # handle date 'types' for small subset of payroll API's
250
254
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
251
255
  end
@@ -176,7 +176,7 @@ module XeroRuby::PayrollAu
176
176
  value = self.send(attr)
177
177
  next if value.nil?
178
178
  key = downcase ? attr : param
179
- hash[key] = _to_hash(value)
179
+ hash[key] = _to_hash(value, downcase: downcase)
180
180
  end
181
181
  hash
182
182
  end
@@ -190,15 +190,17 @@ module XeroRuby::PayrollAu
190
190
  # For object, use to_hash. Otherwise, just return the value
191
191
  # @param [Object] value Any valid value
192
192
  # @return [Hash] Returns the value in the form of hash
193
- def _to_hash(value)
193
+ def _to_hash(value, downcase: false)
194
194
  if value.is_a?(Array)
195
- value.compact.map { |v| _to_hash(v) }
195
+ value.map do |v|
196
+ v.to_hash(downcase: downcase)
197
+ end
196
198
  elsif value.is_a?(Hash)
197
199
  {}.tap do |hash|
198
- value.each { |k, v| hash[k] = _to_hash(v) }
200
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
199
201
  end
200
202
  elsif value.respond_to? :to_hash
201
- value.to_hash
203
+ value.to_hash(downcase: downcase)
202
204
  else
203
205
  value
204
206
  end
@@ -206,8 +208,10 @@ module XeroRuby::PayrollAu
206
208
 
207
209
  def parse_date(datestring)
208
210
  if datestring.include?('Date')
209
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
210
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
211
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
212
+ original, date, timezone = *date_pattern.match(datestring)
213
+ date = (date.to_i / 1000)
214
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
211
215
  else # handle date 'types' for small subset of payroll API's
212
216
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
213
217
  end
@@ -335,7 +335,7 @@ module XeroRuby::PayrollAu
335
335
  value = self.send(attr)
336
336
  next if value.nil?
337
337
  key = downcase ? attr : param
338
- hash[key] = _to_hash(value)
338
+ hash[key] = _to_hash(value, downcase: downcase)
339
339
  end
340
340
  hash
341
341
  end
@@ -349,15 +349,17 @@ module XeroRuby::PayrollAu
349
349
  # For object, use to_hash. Otherwise, just return the value
350
350
  # @param [Object] value Any valid value
351
351
  # @return [Hash] Returns the value in the form of hash
352
- def _to_hash(value)
352
+ def _to_hash(value, downcase: false)
353
353
  if value.is_a?(Array)
354
- value.compact.map { |v| _to_hash(v) }
354
+ value.map do |v|
355
+ v.to_hash(downcase: downcase)
356
+ end
355
357
  elsif value.is_a?(Hash)
356
358
  {}.tap do |hash|
357
- value.each { |k, v| hash[k] = _to_hash(v) }
359
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
358
360
  end
359
361
  elsif value.respond_to? :to_hash
360
- value.to_hash
362
+ value.to_hash(downcase: downcase)
361
363
  else
362
364
  value
363
365
  end
@@ -365,8 +367,10 @@ module XeroRuby::PayrollAu
365
367
 
366
368
  def parse_date(datestring)
367
369
  if datestring.include?('Date')
368
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
369
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
370
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
371
+ original, date, timezone = *date_pattern.match(datestring)
372
+ date = (date.to_i / 1000)
373
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
370
374
  else # handle date 'types' for small subset of payroll API's
371
375
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
372
376
  end
@@ -178,7 +178,7 @@ module XeroRuby::PayrollAu
178
178
  value = self.send(attr)
179
179
  next if value.nil?
180
180
  key = downcase ? attr : param
181
- hash[key] = _to_hash(value)
181
+ hash[key] = _to_hash(value, downcase: downcase)
182
182
  end
183
183
  hash
184
184
  end
@@ -192,15 +192,17 @@ module XeroRuby::PayrollAu
192
192
  # For object, use to_hash. Otherwise, just return the value
193
193
  # @param [Object] value Any valid value
194
194
  # @return [Hash] Returns the value in the form of hash
195
- def _to_hash(value)
195
+ def _to_hash(value, downcase: false)
196
196
  if value.is_a?(Array)
197
- value.compact.map { |v| _to_hash(v) }
197
+ value.map do |v|
198
+ v.to_hash(downcase: downcase)
199
+ end
198
200
  elsif value.is_a?(Hash)
199
201
  {}.tap do |hash|
200
- value.each { |k, v| hash[k] = _to_hash(v) }
202
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
201
203
  end
202
204
  elsif value.respond_to? :to_hash
203
- value.to_hash
205
+ value.to_hash(downcase: downcase)
204
206
  else
205
207
  value
206
208
  end
@@ -208,8 +210,10 @@ module XeroRuby::PayrollAu
208
210
 
209
211
  def parse_date(datestring)
210
212
  if datestring.include?('Date')
211
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
212
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
213
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
214
+ original, date, timezone = *date_pattern.match(datestring)
215
+ date = (date.to_i / 1000)
216
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
213
217
  else # handle date 'types' for small subset of payroll API's
214
218
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
215
219
  end
@@ -226,7 +226,7 @@ module XeroRuby::PayrollAu
226
226
  value = self.send(attr)
227
227
  next if value.nil?
228
228
  key = downcase ? attr : param
229
- hash[key] = _to_hash(value)
229
+ hash[key] = _to_hash(value, downcase: downcase)
230
230
  end
231
231
  hash
232
232
  end
@@ -240,15 +240,17 @@ module XeroRuby::PayrollAu
240
240
  # For object, use to_hash. Otherwise, just return the value
241
241
  # @param [Object] value Any valid value
242
242
  # @return [Hash] Returns the value in the form of hash
243
- def _to_hash(value)
243
+ def _to_hash(value, downcase: false)
244
244
  if value.is_a?(Array)
245
- value.compact.map { |v| _to_hash(v) }
245
+ value.map do |v|
246
+ v.to_hash(downcase: downcase)
247
+ end
246
248
  elsif value.is_a?(Hash)
247
249
  {}.tap do |hash|
248
- value.each { |k, v| hash[k] = _to_hash(v) }
250
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
249
251
  end
250
252
  elsif value.respond_to? :to_hash
251
- value.to_hash
253
+ value.to_hash(downcase: downcase)
252
254
  else
253
255
  value
254
256
  end
@@ -256,8 +258,10 @@ module XeroRuby::PayrollAu
256
258
 
257
259
  def parse_date(datestring)
258
260
  if datestring.include?('Date')
259
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
260
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
261
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
262
+ original, date, timezone = *date_pattern.match(datestring)
263
+ date = (date.to_i / 1000)
264
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
261
265
  else # handle date 'types' for small subset of payroll API's
262
266
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
263
267
  end
@@ -238,7 +238,7 @@ module XeroRuby::PayrollAu
238
238
  value = self.send(attr)
239
239
  next if value.nil?
240
240
  key = downcase ? attr : param
241
- hash[key] = _to_hash(value)
241
+ hash[key] = _to_hash(value, downcase: downcase)
242
242
  end
243
243
  hash
244
244
  end
@@ -252,15 +252,17 @@ module XeroRuby::PayrollAu
252
252
  # For object, use to_hash. Otherwise, just return the value
253
253
  # @param [Object] value Any valid value
254
254
  # @return [Hash] Returns the value in the form of hash
255
- def _to_hash(value)
255
+ def _to_hash(value, downcase: false)
256
256
  if value.is_a?(Array)
257
- value.compact.map { |v| _to_hash(v) }
257
+ value.map do |v|
258
+ v.to_hash(downcase: downcase)
259
+ end
258
260
  elsif value.is_a?(Hash)
259
261
  {}.tap do |hash|
260
- value.each { |k, v| hash[k] = _to_hash(v) }
262
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
261
263
  end
262
264
  elsif value.respond_to? :to_hash
263
- value.to_hash
265
+ value.to_hash(downcase: downcase)
264
266
  else
265
267
  value
266
268
  end
@@ -268,8 +270,10 @@ module XeroRuby::PayrollAu
268
270
 
269
271
  def parse_date(datestring)
270
272
  if datestring.include?('Date')
271
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
272
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
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
273
277
  else # handle date 'types' for small subset of payroll API's
274
278
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
275
279
  end
@@ -178,7 +178,7 @@ module XeroRuby::PayrollAu
178
178
  value = self.send(attr)
179
179
  next if value.nil?
180
180
  key = downcase ? attr : param
181
- hash[key] = _to_hash(value)
181
+ hash[key] = _to_hash(value, downcase: downcase)
182
182
  end
183
183
  hash
184
184
  end
@@ -192,15 +192,17 @@ module XeroRuby::PayrollAu
192
192
  # For object, use to_hash. Otherwise, just return the value
193
193
  # @param [Object] value Any valid value
194
194
  # @return [Hash] Returns the value in the form of hash
195
- def _to_hash(value)
195
+ def _to_hash(value, downcase: false)
196
196
  if value.is_a?(Array)
197
- value.compact.map { |v| _to_hash(v) }
197
+ value.map do |v|
198
+ v.to_hash(downcase: downcase)
199
+ end
198
200
  elsif value.is_a?(Hash)
199
201
  {}.tap do |hash|
200
- value.each { |k, v| hash[k] = _to_hash(v) }
202
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
201
203
  end
202
204
  elsif value.respond_to? :to_hash
203
- value.to_hash
205
+ value.to_hash(downcase: downcase)
204
206
  else
205
207
  value
206
208
  end
@@ -208,8 +210,10 @@ module XeroRuby::PayrollAu
208
210
 
209
211
  def parse_date(datestring)
210
212
  if datestring.include?('Date')
211
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
212
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
213
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
214
+ original, date, timezone = *date_pattern.match(datestring)
215
+ date = (date.to_i / 1000)
216
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
213
217
  else # handle date 'types' for small subset of payroll API's
214
218
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
215
219
  end
@@ -372,7 +372,7 @@ module XeroRuby::PayrollAu
372
372
  value = self.send(attr)
373
373
  next if value.nil?
374
374
  key = downcase ? attr : param
375
- hash[key] = _to_hash(value)
375
+ hash[key] = _to_hash(value, downcase: downcase)
376
376
  end
377
377
  hash
378
378
  end
@@ -386,15 +386,17 @@ module XeroRuby::PayrollAu
386
386
  # For object, use to_hash. Otherwise, just return the value
387
387
  # @param [Object] value Any valid value
388
388
  # @return [Hash] Returns the value in the form of hash
389
- def _to_hash(value)
389
+ def _to_hash(value, downcase: false)
390
390
  if value.is_a?(Array)
391
- value.compact.map { |v| _to_hash(v) }
391
+ value.map do |v|
392
+ v.to_hash(downcase: downcase)
393
+ end
392
394
  elsif value.is_a?(Hash)
393
395
  {}.tap do |hash|
394
- value.each { |k, v| hash[k] = _to_hash(v) }
396
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
395
397
  end
396
398
  elsif value.respond_to? :to_hash
397
- value.to_hash
399
+ value.to_hash(downcase: downcase)
398
400
  else
399
401
  value
400
402
  end
@@ -402,8 +404,10 @@ module XeroRuby::PayrollAu
402
404
 
403
405
  def parse_date(datestring)
404
406
  if datestring.include?('Date')
405
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
406
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
407
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
408
+ original, date, timezone = *date_pattern.match(datestring)
409
+ date = (date.to_i / 1000)
410
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
407
411
  else # handle date 'types' for small subset of payroll API's
408
412
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
409
413
  end
@@ -262,7 +262,7 @@ module XeroRuby::PayrollAu
262
262
  value = self.send(attr)
263
263
  next if value.nil?
264
264
  key = downcase ? attr : param
265
- hash[key] = _to_hash(value)
265
+ hash[key] = _to_hash(value, downcase: downcase)
266
266
  end
267
267
  hash
268
268
  end
@@ -276,15 +276,17 @@ module XeroRuby::PayrollAu
276
276
  # For object, use to_hash. Otherwise, just return the value
277
277
  # @param [Object] value Any valid value
278
278
  # @return [Hash] Returns the value in the form of hash
279
- def _to_hash(value)
279
+ def _to_hash(value, downcase: false)
280
280
  if value.is_a?(Array)
281
- value.compact.map { |v| _to_hash(v) }
281
+ value.map do |v|
282
+ v.to_hash(downcase: downcase)
283
+ end
282
284
  elsif value.is_a?(Hash)
283
285
  {}.tap do |hash|
284
- value.each { |k, v| hash[k] = _to_hash(v) }
286
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
285
287
  end
286
288
  elsif value.respond_to? :to_hash
287
- value.to_hash
289
+ value.to_hash(downcase: downcase)
288
290
  else
289
291
  value
290
292
  end
@@ -292,8 +294,10 @@ module XeroRuby::PayrollAu
292
294
 
293
295
  def parse_date(datestring)
294
296
  if datestring.include?('Date')
295
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
296
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
297
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
298
+ original, date, timezone = *date_pattern.match(datestring)
299
+ date = (date.to_i / 1000)
300
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
297
301
  else # handle date 'types' for small subset of payroll API's
298
302
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
299
303
  end
@@ -176,7 +176,7 @@ module XeroRuby::PayrollAu
176
176
  value = self.send(attr)
177
177
  next if value.nil?
178
178
  key = downcase ? attr : param
179
- hash[key] = _to_hash(value)
179
+ hash[key] = _to_hash(value, downcase: downcase)
180
180
  end
181
181
  hash
182
182
  end
@@ -190,15 +190,17 @@ module XeroRuby::PayrollAu
190
190
  # For object, use to_hash. Otherwise, just return the value
191
191
  # @param [Object] value Any valid value
192
192
  # @return [Hash] Returns the value in the form of hash
193
- def _to_hash(value)
193
+ def _to_hash(value, downcase: false)
194
194
  if value.is_a?(Array)
195
- value.compact.map { |v| _to_hash(v) }
195
+ value.map do |v|
196
+ v.to_hash(downcase: downcase)
197
+ end
196
198
  elsif value.is_a?(Hash)
197
199
  {}.tap do |hash|
198
- value.each { |k, v| hash[k] = _to_hash(v) }
200
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
199
201
  end
200
202
  elsif value.respond_to? :to_hash
201
- value.to_hash
203
+ value.to_hash(downcase: downcase)
202
204
  else
203
205
  value
204
206
  end
@@ -206,8 +208,10 @@ module XeroRuby::PayrollAu
206
208
 
207
209
  def parse_date(datestring)
208
210
  if datestring.include?('Date')
209
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
210
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
211
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
212
+ original, date, timezone = *date_pattern.match(datestring)
213
+ date = (date.to_i / 1000)
214
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
211
215
  else # handle date 'types' for small subset of payroll API's
212
216
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
213
217
  end
@@ -286,7 +286,7 @@ module XeroRuby::PayrollAu
286
286
  value = self.send(attr)
287
287
  next if value.nil?
288
288
  key = downcase ? attr : param
289
- hash[key] = _to_hash(value)
289
+ hash[key] = _to_hash(value, downcase: downcase)
290
290
  end
291
291
  hash
292
292
  end
@@ -300,15 +300,17 @@ module XeroRuby::PayrollAu
300
300
  # For object, use to_hash. Otherwise, just return the value
301
301
  # @param [Object] value Any valid value
302
302
  # @return [Hash] Returns the value in the form of hash
303
- def _to_hash(value)
303
+ def _to_hash(value, downcase: false)
304
304
  if value.is_a?(Array)
305
- value.compact.map { |v| _to_hash(v) }
305
+ value.map do |v|
306
+ v.to_hash(downcase: downcase)
307
+ end
306
308
  elsif value.is_a?(Hash)
307
309
  {}.tap do |hash|
308
- value.each { |k, v| hash[k] = _to_hash(v) }
310
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
309
311
  end
310
312
  elsif value.respond_to? :to_hash
311
- value.to_hash
313
+ value.to_hash(downcase: downcase)
312
314
  else
313
315
  value
314
316
  end
@@ -316,8 +318,10 @@ module XeroRuby::PayrollAu
316
318
 
317
319
  def parse_date(datestring)
318
320
  if datestring.include?('Date')
319
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
320
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
321
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
322
+ original, date, timezone = *date_pattern.match(datestring)
323
+ date = (date.to_i / 1000)
324
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
321
325
  else # handle date 'types' for small subset of payroll API's
322
326
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
323
327
  end