xero-ruby 2.9.1 → 3.1.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 (399) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +133 -97
  3. data/lib/xero-ruby.rb +3 -0
  4. data/lib/xero-ruby/api/accounting_api.rb +306 -147
  5. data/lib/xero-ruby/api_client.rb +57 -8
  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 +14 -9
  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/api_client_spec.rb +84 -9
  398. data/spec/helper_methods_spec.rb +28 -0
  399. metadata +29 -6
@@ -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
@@ -221,7 +221,7 @@ module XeroRuby::PayrollAu
221
221
  value = self.send(attr)
222
222
  next if value.nil?
223
223
  key = downcase ? attr : param
224
- hash[key] = _to_hash(value)
224
+ hash[key] = _to_hash(value, downcase: downcase)
225
225
  end
226
226
  hash
227
227
  end
@@ -235,15 +235,17 @@ module XeroRuby::PayrollAu
235
235
  # For object, use to_hash. Otherwise, just return the value
236
236
  # @param [Object] value Any valid value
237
237
  # @return [Hash] Returns the value in the form of hash
238
- def _to_hash(value)
238
+ def _to_hash(value, downcase: false)
239
239
  if value.is_a?(Array)
240
- value.compact.map { |v| _to_hash(v) }
240
+ value.map do |v|
241
+ v.to_hash(downcase: downcase)
242
+ end
241
243
  elsif value.is_a?(Hash)
242
244
  {}.tap do |hash|
243
- value.each { |k, v| hash[k] = _to_hash(v) }
245
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
244
246
  end
245
247
  elsif value.respond_to? :to_hash
246
- value.to_hash
248
+ value.to_hash(downcase: downcase)
247
249
  else
248
250
  value
249
251
  end
@@ -251,8 +253,10 @@ module XeroRuby::PayrollAu
251
253
 
252
254
  def parse_date(datestring)
253
255
  if datestring.include?('Date')
254
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
255
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
256
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
257
+ original, date, timezone = *date_pattern.match(datestring)
258
+ date = (date.to_i / 1000)
259
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
256
260
  else # handle date 'types' for small subset of payroll API's
257
261
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
258
262
  end
@@ -179,7 +179,7 @@ module XeroRuby::PayrollAu
179
179
  value = self.send(attr)
180
180
  next if value.nil?
181
181
  key = downcase ? attr : param
182
- hash[key] = _to_hash(value)
182
+ hash[key] = _to_hash(value, downcase: downcase)
183
183
  end
184
184
  hash
185
185
  end
@@ -193,15 +193,17 @@ module XeroRuby::PayrollAu
193
193
  # For object, use to_hash. Otherwise, just return the value
194
194
  # @param [Object] value Any valid value
195
195
  # @return [Hash] Returns the value in the form of hash
196
- def _to_hash(value)
196
+ def _to_hash(value, downcase: false)
197
197
  if value.is_a?(Array)
198
- value.compact.map { |v| _to_hash(v) }
198
+ value.map do |v|
199
+ v.to_hash(downcase: downcase)
200
+ end
199
201
  elsif value.is_a?(Hash)
200
202
  {}.tap do |hash|
201
- value.each { |k, v| hash[k] = _to_hash(v) }
203
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
202
204
  end
203
205
  elsif value.respond_to? :to_hash
204
- value.to_hash
206
+ value.to_hash(downcase: downcase)
205
207
  else
206
208
  value
207
209
  end
@@ -209,8 +211,10 @@ module XeroRuby::PayrollAu
209
211
 
210
212
  def parse_date(datestring)
211
213
  if datestring.include?('Date')
212
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
213
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
214
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
215
+ original, date, timezone = *date_pattern.match(datestring)
216
+ date = (date.to_i / 1000)
217
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
214
218
  else # handle date 'types' for small subset of payroll API's
215
219
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
216
220
  end
@@ -231,7 +231,7 @@ module XeroRuby::PayrollAu
231
231
  value = self.send(attr)
232
232
  next if value.nil?
233
233
  key = downcase ? attr : param
234
- hash[key] = _to_hash(value)
234
+ hash[key] = _to_hash(value, downcase: downcase)
235
235
  end
236
236
  hash
237
237
  end
@@ -245,15 +245,17 @@ module XeroRuby::PayrollAu
245
245
  # For object, use to_hash. Otherwise, just return the value
246
246
  # @param [Object] value Any valid value
247
247
  # @return [Hash] Returns the value in the form of hash
248
- def _to_hash(value)
248
+ def _to_hash(value, downcase: false)
249
249
  if value.is_a?(Array)
250
- value.compact.map { |v| _to_hash(v) }
250
+ value.map do |v|
251
+ v.to_hash(downcase: downcase)
252
+ end
251
253
  elsif value.is_a?(Hash)
252
254
  {}.tap do |hash|
253
- value.each { |k, v| hash[k] = _to_hash(v) }
255
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
254
256
  end
255
257
  elsif value.respond_to? :to_hash
256
- value.to_hash
258
+ value.to_hash(downcase: downcase)
257
259
  else
258
260
  value
259
261
  end
@@ -261,8 +263,10 @@ module XeroRuby::PayrollAu
261
263
 
262
264
  def parse_date(datestring)
263
265
  if datestring.include?('Date')
264
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
265
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
266
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
267
+ original, date, timezone = *date_pattern.match(datestring)
268
+ date = (date.to_i / 1000)
269
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
266
270
  else # handle date 'types' for small subset of payroll API's
267
271
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
268
272
  end
@@ -198,7 +198,7 @@ module XeroRuby::PayrollAu
198
198
  value = self.send(attr)
199
199
  next if value.nil?
200
200
  key = downcase ? attr : param
201
- hash[key] = _to_hash(value)
201
+ hash[key] = _to_hash(value, downcase: downcase)
202
202
  end
203
203
  hash
204
204
  end
@@ -212,15 +212,17 @@ module XeroRuby::PayrollAu
212
212
  # For object, use to_hash. Otherwise, just return the value
213
213
  # @param [Object] value Any valid value
214
214
  # @return [Hash] Returns the value in the form of hash
215
- def _to_hash(value)
215
+ def _to_hash(value, downcase: false)
216
216
  if value.is_a?(Array)
217
- value.compact.map { |v| _to_hash(v) }
217
+ value.map do |v|
218
+ v.to_hash(downcase: downcase)
219
+ end
218
220
  elsif value.is_a?(Hash)
219
221
  {}.tap do |hash|
220
- value.each { |k, v| hash[k] = _to_hash(v) }
222
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
221
223
  end
222
224
  elsif value.respond_to? :to_hash
223
- value.to_hash
225
+ value.to_hash(downcase: downcase)
224
226
  else
225
227
  value
226
228
  end
@@ -228,8 +230,10 @@ module XeroRuby::PayrollAu
228
230
 
229
231
  def parse_date(datestring)
230
232
  if datestring.include?('Date')
231
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
232
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
233
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
234
+ original, date, timezone = *date_pattern.match(datestring)
235
+ date = (date.to_i / 1000)
236
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
233
237
  else # handle date 'types' for small subset of payroll API's
234
238
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
235
239
  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
@@ -187,7 +187,7 @@ module XeroRuby::PayrollAu
187
187
  value = self.send(attr)
188
188
  next if value.nil?
189
189
  key = downcase ? attr : param
190
- hash[key] = _to_hash(value)
190
+ hash[key] = _to_hash(value, downcase: downcase)
191
191
  end
192
192
  hash
193
193
  end
@@ -201,15 +201,17 @@ module XeroRuby::PayrollAu
201
201
  # For object, use to_hash. Otherwise, just return the value
202
202
  # @param [Object] value Any valid value
203
203
  # @return [Hash] Returns the value in the form of hash
204
- def _to_hash(value)
204
+ def _to_hash(value, downcase: false)
205
205
  if value.is_a?(Array)
206
- value.compact.map { |v| _to_hash(v) }
206
+ value.map do |v|
207
+ v.to_hash(downcase: downcase)
208
+ end
207
209
  elsif value.is_a?(Hash)
208
210
  {}.tap do |hash|
209
- value.each { |k, v| hash[k] = _to_hash(v) }
211
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
210
212
  end
211
213
  elsif value.respond_to? :to_hash
212
- value.to_hash
214
+ value.to_hash(downcase: downcase)
213
215
  else
214
216
  value
215
217
  end
@@ -217,8 +219,10 @@ module XeroRuby::PayrollAu
217
219
 
218
220
  def parse_date(datestring)
219
221
  if datestring.include?('Date')
220
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
221
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
222
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
223
+ original, date, timezone = *date_pattern.match(datestring)
224
+ date = (date.to_i / 1000)
225
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
222
226
  else # handle date 'types' for small subset of payroll API's
223
227
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
224
228
  end
@@ -187,7 +187,7 @@ module XeroRuby::PayrollAu
187
187
  value = self.send(attr)
188
188
  next if value.nil?
189
189
  key = downcase ? attr : param
190
- hash[key] = _to_hash(value)
190
+ hash[key] = _to_hash(value, downcase: downcase)
191
191
  end
192
192
  hash
193
193
  end
@@ -201,15 +201,17 @@ module XeroRuby::PayrollAu
201
201
  # For object, use to_hash. Otherwise, just return the value
202
202
  # @param [Object] value Any valid value
203
203
  # @return [Hash] Returns the value in the form of hash
204
- def _to_hash(value)
204
+ def _to_hash(value, downcase: false)
205
205
  if value.is_a?(Array)
206
- value.compact.map { |v| _to_hash(v) }
206
+ value.map do |v|
207
+ v.to_hash(downcase: downcase)
208
+ end
207
209
  elsif value.is_a?(Hash)
208
210
  {}.tap do |hash|
209
- value.each { |k, v| hash[k] = _to_hash(v) }
211
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
210
212
  end
211
213
  elsif value.respond_to? :to_hash
212
- value.to_hash
214
+ value.to_hash(downcase: downcase)
213
215
  else
214
216
  value
215
217
  end
@@ -217,8 +219,10 @@ module XeroRuby::PayrollAu
217
219
 
218
220
  def parse_date(datestring)
219
221
  if datestring.include?('Date')
220
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
221
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
222
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
223
+ original, date, timezone = *date_pattern.match(datestring)
224
+ date = (date.to_i / 1000)
225
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
222
226
  else # handle date 'types' for small subset of payroll API's
223
227
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
224
228
  end
@@ -187,7 +187,7 @@ module XeroRuby::PayrollAu
187
187
  value = self.send(attr)
188
188
  next if value.nil?
189
189
  key = downcase ? attr : param
190
- hash[key] = _to_hash(value)
190
+ hash[key] = _to_hash(value, downcase: downcase)
191
191
  end
192
192
  hash
193
193
  end
@@ -201,15 +201,17 @@ module XeroRuby::PayrollAu
201
201
  # For object, use to_hash. Otherwise, just return the value
202
202
  # @param [Object] value Any valid value
203
203
  # @return [Hash] Returns the value in the form of hash
204
- def _to_hash(value)
204
+ def _to_hash(value, downcase: false)
205
205
  if value.is_a?(Array)
206
- value.compact.map { |v| _to_hash(v) }
206
+ value.map do |v|
207
+ v.to_hash(downcase: downcase)
208
+ end
207
209
  elsif value.is_a?(Hash)
208
210
  {}.tap do |hash|
209
- value.each { |k, v| hash[k] = _to_hash(v) }
211
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
210
212
  end
211
213
  elsif value.respond_to? :to_hash
212
- value.to_hash
214
+ value.to_hash(downcase: downcase)
213
215
  else
214
216
  value
215
217
  end
@@ -217,8 +219,10 @@ module XeroRuby::PayrollAu
217
219
 
218
220
  def parse_date(datestring)
219
221
  if datestring.include?('Date')
220
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
221
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
222
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
223
+ original, date, timezone = *date_pattern.match(datestring)
224
+ date = (date.to_i / 1000)
225
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
222
226
  else # handle date 'types' for small subset of payroll API's
223
227
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
224
228
  end
@@ -303,7 +303,7 @@ module XeroRuby::PayrollAu
303
303
  value = self.send(attr)
304
304
  next if value.nil?
305
305
  key = downcase ? attr : param
306
- hash[key] = _to_hash(value)
306
+ hash[key] = _to_hash(value, downcase: downcase)
307
307
  end
308
308
  hash
309
309
  end
@@ -317,15 +317,17 @@ module XeroRuby::PayrollAu
317
317
  # For object, use to_hash. Otherwise, just return the value
318
318
  # @param [Object] value Any valid value
319
319
  # @return [Hash] Returns the value in the form of hash
320
- def _to_hash(value)
320
+ def _to_hash(value, downcase: false)
321
321
  if value.is_a?(Array)
322
- value.compact.map { |v| _to_hash(v) }
322
+ value.map do |v|
323
+ v.to_hash(downcase: downcase)
324
+ end
323
325
  elsif value.is_a?(Hash)
324
326
  {}.tap do |hash|
325
- value.each { |k, v| hash[k] = _to_hash(v) }
327
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
326
328
  end
327
329
  elsif value.respond_to? :to_hash
328
- value.to_hash
330
+ value.to_hash(downcase: downcase)
329
331
  else
330
332
  value
331
333
  end
@@ -333,8 +335,10 @@ module XeroRuby::PayrollAu
333
335
 
334
336
  def parse_date(datestring)
335
337
  if datestring.include?('Date')
336
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
337
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
338
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
339
+ original, date, timezone = *date_pattern.match(datestring)
340
+ date = (date.to_i / 1000)
341
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
338
342
  else # handle date 'types' for small subset of payroll API's
339
343
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
340
344
  end
@@ -206,7 +206,7 @@ module XeroRuby::PayrollAu
206
206
  value = self.send(attr)
207
207
  next if value.nil?
208
208
  key = downcase ? attr : param
209
- hash[key] = _to_hash(value)
209
+ hash[key] = _to_hash(value, downcase: downcase)
210
210
  end
211
211
  hash
212
212
  end
@@ -220,15 +220,17 @@ module XeroRuby::PayrollAu
220
220
  # For object, use to_hash. Otherwise, just return the value
221
221
  # @param [Object] value Any valid value
222
222
  # @return [Hash] Returns the value in the form of hash
223
- def _to_hash(value)
223
+ def _to_hash(value, downcase: false)
224
224
  if value.is_a?(Array)
225
- value.compact.map { |v| _to_hash(v) }
225
+ value.map do |v|
226
+ v.to_hash(downcase: downcase)
227
+ end
226
228
  elsif value.is_a?(Hash)
227
229
  {}.tap do |hash|
228
- value.each { |k, v| hash[k] = _to_hash(v) }
230
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
229
231
  end
230
232
  elsif value.respond_to? :to_hash
231
- value.to_hash
233
+ value.to_hash(downcase: downcase)
232
234
  else
233
235
  value
234
236
  end
@@ -236,8 +238,10 @@ module XeroRuby::PayrollAu
236
238
 
237
239
  def parse_date(datestring)
238
240
  if datestring.include?('Date')
239
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
240
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
241
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
242
+ original, date, timezone = *date_pattern.match(datestring)
243
+ date = (date.to_i / 1000)
244
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
241
245
  else # handle date 'types' for small subset of payroll API's
242
246
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
243
247
  end