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
@@ -241,7 +241,7 @@ module XeroRuby::PayrollNz
241
241
  value = self.send(attr)
242
242
  next if value.nil?
243
243
  key = downcase ? attr : param
244
- hash[key] = _to_hash(value)
244
+ hash[key] = _to_hash(value, downcase: downcase)
245
245
  end
246
246
  hash
247
247
  end
@@ -255,15 +255,17 @@ module XeroRuby::PayrollNz
255
255
  # For object, use to_hash. Otherwise, just return the value
256
256
  # @param [Object] value Any valid value
257
257
  # @return [Hash] Returns the value in the form of hash
258
- def _to_hash(value)
258
+ def _to_hash(value, downcase: false)
259
259
  if value.is_a?(Array)
260
- value.compact.map { |v| _to_hash(v) }
260
+ value.map do |v|
261
+ v.to_hash(downcase: downcase)
262
+ end
261
263
  elsif value.is_a?(Hash)
262
264
  {}.tap do |hash|
263
- value.each { |k, v| hash[k] = _to_hash(v) }
265
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
264
266
  end
265
267
  elsif value.respond_to? :to_hash
266
- value.to_hash
268
+ value.to_hash(downcase: downcase)
267
269
  else
268
270
  value
269
271
  end
@@ -271,8 +273,10 @@ module XeroRuby::PayrollNz
271
273
 
272
274
  def parse_date(datestring)
273
275
  if datestring.include?('Date')
274
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
275
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
276
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
277
+ original, date, timezone = *date_pattern.match(datestring)
278
+ date = (date.to_i / 1000)
279
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
276
280
  else # handle date 'types' for small subset of payroll API's
277
281
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
278
282
  end
@@ -196,7 +196,7 @@ module XeroRuby::PayrollNz
196
196
  value = self.send(attr)
197
197
  next if value.nil?
198
198
  key = downcase ? attr : param
199
- hash[key] = _to_hash(value)
199
+ hash[key] = _to_hash(value, downcase: downcase)
200
200
  end
201
201
  hash
202
202
  end
@@ -210,15 +210,17 @@ module XeroRuby::PayrollNz
210
210
  # For object, use to_hash. Otherwise, just return the value
211
211
  # @param [Object] value Any valid value
212
212
  # @return [Hash] Returns the value in the form of hash
213
- def _to_hash(value)
213
+ def _to_hash(value, downcase: false)
214
214
  if value.is_a?(Array)
215
- value.compact.map { |v| _to_hash(v) }
215
+ value.map do |v|
216
+ v.to_hash(downcase: downcase)
217
+ end
216
218
  elsif value.is_a?(Hash)
217
219
  {}.tap do |hash|
218
- value.each { |k, v| hash[k] = _to_hash(v) }
220
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
219
221
  end
220
222
  elsif value.respond_to? :to_hash
221
- value.to_hash
223
+ value.to_hash(downcase: downcase)
222
224
  else
223
225
  value
224
226
  end
@@ -226,8 +228,10 @@ module XeroRuby::PayrollNz
226
228
 
227
229
  def parse_date(datestring)
228
230
  if datestring.include?('Date')
229
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
230
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
231
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
232
+ original, date, timezone = *date_pattern.match(datestring)
233
+ date = (date.to_i / 1000)
234
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
231
235
  else # handle date 'types' for small subset of payroll API's
232
236
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
233
237
  end
@@ -198,7 +198,7 @@ module XeroRuby::PayrollNz
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::PayrollNz
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::PayrollNz
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
@@ -206,7 +206,7 @@ module XeroRuby::PayrollNz
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::PayrollNz
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::PayrollNz
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
@@ -339,7 +339,7 @@ module XeroRuby::PayrollNz
339
339
  value = self.send(attr)
340
340
  next if value.nil?
341
341
  key = downcase ? attr : param
342
- hash[key] = _to_hash(value)
342
+ hash[key] = _to_hash(value, downcase: downcase)
343
343
  end
344
344
  hash
345
345
  end
@@ -353,15 +353,17 @@ module XeroRuby::PayrollNz
353
353
  # For object, use to_hash. Otherwise, just return the value
354
354
  # @param [Object] value Any valid value
355
355
  # @return [Hash] Returns the value in the form of hash
356
- def _to_hash(value)
356
+ def _to_hash(value, downcase: false)
357
357
  if value.is_a?(Array)
358
- value.compact.map { |v| _to_hash(v) }
358
+ value.map do |v|
359
+ v.to_hash(downcase: downcase)
360
+ end
359
361
  elsif value.is_a?(Hash)
360
362
  {}.tap do |hash|
361
- value.each { |k, v| hash[k] = _to_hash(v) }
363
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
362
364
  end
363
365
  elsif value.respond_to? :to_hash
364
- value.to_hash
366
+ value.to_hash(downcase: downcase)
365
367
  else
366
368
  value
367
369
  end
@@ -369,8 +371,10 @@ module XeroRuby::PayrollNz
369
371
 
370
372
  def parse_date(datestring)
371
373
  if datestring.include?('Date')
372
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
373
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
374
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
375
+ original, date, timezone = *date_pattern.match(datestring)
376
+ date = (date.to_i / 1000)
377
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
374
378
  else # handle date 'types' for small subset of payroll API's
375
379
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
376
380
  end
@@ -256,7 +256,7 @@ module XeroRuby::PayrollNz
256
256
  value = self.send(attr)
257
257
  next if value.nil?
258
258
  key = downcase ? attr : param
259
- hash[key] = _to_hash(value)
259
+ hash[key] = _to_hash(value, downcase: downcase)
260
260
  end
261
261
  hash
262
262
  end
@@ -270,15 +270,17 @@ module XeroRuby::PayrollNz
270
270
  # For object, use to_hash. Otherwise, just return the value
271
271
  # @param [Object] value Any valid value
272
272
  # @return [Hash] Returns the value in the form of hash
273
- def _to_hash(value)
273
+ def _to_hash(value, downcase: false)
274
274
  if value.is_a?(Array)
275
- value.compact.map { |v| _to_hash(v) }
275
+ value.map do |v|
276
+ v.to_hash(downcase: downcase)
277
+ end
276
278
  elsif value.is_a?(Hash)
277
279
  {}.tap do |hash|
278
- value.each { |k, v| hash[k] = _to_hash(v) }
280
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
279
281
  end
280
282
  elsif value.respond_to? :to_hash
281
- value.to_hash
283
+ value.to_hash(downcase: downcase)
282
284
  else
283
285
  value
284
286
  end
@@ -286,8 +288,10 @@ module XeroRuby::PayrollNz
286
288
 
287
289
  def parse_date(datestring)
288
290
  if datestring.include?('Date')
289
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
290
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
291
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
292
+ original, date, timezone = *date_pattern.match(datestring)
293
+ date = (date.to_i / 1000)
294
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
291
295
  else # handle date 'types' for small subset of payroll API's
292
296
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
293
297
  end
@@ -196,7 +196,7 @@ module XeroRuby::PayrollNz
196
196
  value = self.send(attr)
197
197
  next if value.nil?
198
198
  key = downcase ? attr : param
199
- hash[key] = _to_hash(value)
199
+ hash[key] = _to_hash(value, downcase: downcase)
200
200
  end
201
201
  hash
202
202
  end
@@ -210,15 +210,17 @@ module XeroRuby::PayrollNz
210
210
  # For object, use to_hash. Otherwise, just return the value
211
211
  # @param [Object] value Any valid value
212
212
  # @return [Hash] Returns the value in the form of hash
213
- def _to_hash(value)
213
+ def _to_hash(value, downcase: false)
214
214
  if value.is_a?(Array)
215
- value.compact.map { |v| _to_hash(v) }
215
+ value.map do |v|
216
+ v.to_hash(downcase: downcase)
217
+ end
216
218
  elsif value.is_a?(Hash)
217
219
  {}.tap do |hash|
218
- value.each { |k, v| hash[k] = _to_hash(v) }
220
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
219
221
  end
220
222
  elsif value.respond_to? :to_hash
221
- value.to_hash
223
+ value.to_hash(downcase: downcase)
222
224
  else
223
225
  value
224
226
  end
@@ -226,8 +228,10 @@ module XeroRuby::PayrollNz
226
228
 
227
229
  def parse_date(datestring)
228
230
  if datestring.include?('Date')
229
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
230
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
231
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
232
+ original, date, timezone = *date_pattern.match(datestring)
233
+ date = (date.to_i / 1000)
234
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
231
235
  else # handle date 'types' for small subset of payroll API's
232
236
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
233
237
  end
@@ -198,7 +198,7 @@ module XeroRuby::PayrollNz
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::PayrollNz
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::PayrollNz
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
@@ -196,7 +196,7 @@ module XeroRuby::PayrollNz
196
196
  value = self.send(attr)
197
197
  next if value.nil?
198
198
  key = downcase ? attr : param
199
- hash[key] = _to_hash(value)
199
+ hash[key] = _to_hash(value, downcase: downcase)
200
200
  end
201
201
  hash
202
202
  end
@@ -210,15 +210,17 @@ module XeroRuby::PayrollNz
210
210
  # For object, use to_hash. Otherwise, just return the value
211
211
  # @param [Object] value Any valid value
212
212
  # @return [Hash] Returns the value in the form of hash
213
- def _to_hash(value)
213
+ def _to_hash(value, downcase: false)
214
214
  if value.is_a?(Array)
215
- value.compact.map { |v| _to_hash(v) }
215
+ value.map do |v|
216
+ v.to_hash(downcase: downcase)
217
+ end
216
218
  elsif value.is_a?(Hash)
217
219
  {}.tap do |hash|
218
- value.each { |k, v| hash[k] = _to_hash(v) }
220
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
219
221
  end
220
222
  elsif value.respond_to? :to_hash
221
- value.to_hash
223
+ value.to_hash(downcase: downcase)
222
224
  else
223
225
  value
224
226
  end
@@ -226,8 +228,10 @@ module XeroRuby::PayrollNz
226
228
 
227
229
  def parse_date(datestring)
228
230
  if datestring.include?('Date')
229
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
230
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
231
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
232
+ original, date, timezone = *date_pattern.match(datestring)
233
+ date = (date.to_i / 1000)
234
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
231
235
  else # handle date 'types' for small subset of payroll API's
232
236
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
233
237
  end
@@ -198,7 +198,7 @@ module XeroRuby::PayrollNz
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::PayrollNz
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::PayrollNz
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
@@ -525,7 +525,7 @@ module XeroRuby::PayrollNz
525
525
  value = self.send(attr)
526
526
  next if value.nil?
527
527
  key = downcase ? attr : param
528
- hash[key] = _to_hash(value)
528
+ hash[key] = _to_hash(value, downcase: downcase)
529
529
  end
530
530
  hash
531
531
  end
@@ -539,15 +539,17 @@ module XeroRuby::PayrollNz
539
539
  # For object, use to_hash. Otherwise, just return the value
540
540
  # @param [Object] value Any valid value
541
541
  # @return [Hash] Returns the value in the form of hash
542
- def _to_hash(value)
542
+ def _to_hash(value, downcase: false)
543
543
  if value.is_a?(Array)
544
- value.compact.map { |v| _to_hash(v) }
544
+ value.map do |v|
545
+ v.to_hash(downcase: downcase)
546
+ end
545
547
  elsif value.is_a?(Hash)
546
548
  {}.tap do |hash|
547
- value.each { |k, v| hash[k] = _to_hash(v) }
549
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
548
550
  end
549
551
  elsif value.respond_to? :to_hash
550
- value.to_hash
552
+ value.to_hash(downcase: downcase)
551
553
  else
552
554
  value
553
555
  end
@@ -555,8 +557,10 @@ module XeroRuby::PayrollNz
555
557
 
556
558
  def parse_date(datestring)
557
559
  if datestring.include?('Date')
558
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
559
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
560
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
561
+ original, date, timezone = *date_pattern.match(datestring)
562
+ date = (date.to_i / 1000)
563
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
560
564
  else # handle date 'types' for small subset of payroll API's
561
565
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
562
566
  end