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