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
@@ -208,7 +208,7 @@ module XeroRuby::Accounting
208
208
  value = self.send(attr)
209
209
  next if value.nil?
210
210
  key = downcase ? attr : param
211
- hash[key] = _to_hash(value)
211
+ hash[key] = _to_hash(value, downcase: downcase)
212
212
  end
213
213
  hash
214
214
  end
@@ -222,15 +222,17 @@ module XeroRuby::Accounting
222
222
  # For object, use to_hash. Otherwise, just return the value
223
223
  # @param [Object] value Any valid value
224
224
  # @return [Hash] Returns the value in the form of hash
225
- def _to_hash(value)
225
+ def _to_hash(value, downcase: false)
226
226
  if value.is_a?(Array)
227
- value.compact.map { |v| _to_hash(v) }
227
+ value.map do |v|
228
+ v.to_hash(downcase: downcase)
229
+ end
228
230
  elsif value.is_a?(Hash)
229
231
  {}.tap do |hash|
230
- value.each { |k, v| hash[k] = _to_hash(v) }
232
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
231
233
  end
232
234
  elsif value.respond_to? :to_hash
233
- value.to_hash
235
+ value.to_hash(downcase: downcase)
234
236
  else
235
237
  value
236
238
  end
@@ -238,8 +240,10 @@ module XeroRuby::Accounting
238
240
 
239
241
  def parse_date(datestring)
240
242
  if datestring.include?('Date')
241
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
242
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
243
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
244
+ original, date, timezone = *date_pattern.match(datestring)
245
+ date = (date.to_i / 1000)
246
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
243
247
  else # handle date 'types' for small subset of payroll API's
244
248
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
245
249
  end
@@ -329,7 +329,7 @@ module XeroRuby::Accounting
329
329
  value = self.send(attr)
330
330
  next if value.nil?
331
331
  key = downcase ? attr : param
332
- hash[key] = _to_hash(value)
332
+ hash[key] = _to_hash(value, downcase: downcase)
333
333
  end
334
334
  hash
335
335
  end
@@ -343,15 +343,17 @@ module XeroRuby::Accounting
343
343
  # For object, use to_hash. Otherwise, just return the value
344
344
  # @param [Object] value Any valid value
345
345
  # @return [Hash] Returns the value in the form of hash
346
- def _to_hash(value)
346
+ def _to_hash(value, downcase: false)
347
347
  if value.is_a?(Array)
348
- value.compact.map { |v| _to_hash(v) }
348
+ value.map do |v|
349
+ v.to_hash(downcase: downcase)
350
+ end
349
351
  elsif value.is_a?(Hash)
350
352
  {}.tap do |hash|
351
- value.each { |k, v| hash[k] = _to_hash(v) }
353
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
352
354
  end
353
355
  elsif value.respond_to? :to_hash
354
- value.to_hash
356
+ value.to_hash(downcase: downcase)
355
357
  else
356
358
  value
357
359
  end
@@ -359,8 +361,10 @@ module XeroRuby::Accounting
359
361
 
360
362
  def parse_date(datestring)
361
363
  if datestring.include?('Date')
362
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
363
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
364
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
365
+ original, date, timezone = *date_pattern.match(datestring)
366
+ date = (date.to_i / 1000)
367
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
364
368
  else # handle date 'types' for small subset of payroll API's
365
369
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
366
370
  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
@@ -235,7 +235,7 @@ module XeroRuby::Accounting
235
235
  value = self.send(attr)
236
236
  next if value.nil?
237
237
  key = downcase ? attr : param
238
- hash[key] = _to_hash(value)
238
+ hash[key] = _to_hash(value, downcase: downcase)
239
239
  end
240
240
  hash
241
241
  end
@@ -249,15 +249,17 @@ module XeroRuby::Accounting
249
249
  # For object, use to_hash. Otherwise, just return the value
250
250
  # @param [Object] value Any valid value
251
251
  # @return [Hash] Returns the value in the form of hash
252
- def _to_hash(value)
252
+ def _to_hash(value, downcase: false)
253
253
  if value.is_a?(Array)
254
- value.compact.map { |v| _to_hash(v) }
254
+ value.map do |v|
255
+ v.to_hash(downcase: downcase)
256
+ end
255
257
  elsif value.is_a?(Hash)
256
258
  {}.tap do |hash|
257
- value.each { |k, v| hash[k] = _to_hash(v) }
259
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
258
260
  end
259
261
  elsif value.respond_to? :to_hash
260
- value.to_hash
262
+ value.to_hash(downcase: downcase)
261
263
  else
262
264
  value
263
265
  end
@@ -265,8 +267,10 @@ module XeroRuby::Accounting
265
267
 
266
268
  def parse_date(datestring)
267
269
  if datestring.include?('Date')
268
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
269
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
270
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
271
+ original, date, timezone = *date_pattern.match(datestring)
272
+ date = (date.to_i / 1000)
273
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
270
274
  else # handle date 'types' for small subset of payroll API's
271
275
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
272
276
  end
@@ -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
@@ -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
@@ -257,7 +257,7 @@ module XeroRuby::Accounting
257
257
  value = self.send(attr)
258
258
  next if value.nil?
259
259
  key = downcase ? attr : param
260
- hash[key] = _to_hash(value)
260
+ hash[key] = _to_hash(value, downcase: downcase)
261
261
  end
262
262
  hash
263
263
  end
@@ -271,15 +271,17 @@ module XeroRuby::Accounting
271
271
  # For object, use to_hash. Otherwise, just return the value
272
272
  # @param [Object] value Any valid value
273
273
  # @return [Hash] Returns the value in the form of hash
274
- def _to_hash(value)
274
+ def _to_hash(value, downcase: false)
275
275
  if value.is_a?(Array)
276
- value.compact.map { |v| _to_hash(v) }
276
+ value.map do |v|
277
+ v.to_hash(downcase: downcase)
278
+ end
277
279
  elsif value.is_a?(Hash)
278
280
  {}.tap do |hash|
279
- value.each { |k, v| hash[k] = _to_hash(v) }
281
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
280
282
  end
281
283
  elsif value.respond_to? :to_hash
282
- value.to_hash
284
+ value.to_hash(downcase: downcase)
283
285
  else
284
286
  value
285
287
  end
@@ -287,8 +289,10 @@ module XeroRuby::Accounting
287
289
 
288
290
  def parse_date(datestring)
289
291
  if datestring.include?('Date')
290
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
291
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
292
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
293
+ original, date, timezone = *date_pattern.match(datestring)
294
+ date = (date.to_i / 1000)
295
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
292
296
  else # handle date 'types' for small subset of payroll API's
293
297
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
294
298
  end
@@ -176,7 +176,7 @@ module XeroRuby::Accounting
176
176
  value = self.send(attr)
177
177
  next if value.nil?
178
178
  key = downcase ? attr : param
179
- hash[key] = _to_hash(value)
179
+ hash[key] = _to_hash(value, downcase: downcase)
180
180
  end
181
181
  hash
182
182
  end
@@ -190,15 +190,17 @@ module XeroRuby::Accounting
190
190
  # For object, use to_hash. Otherwise, just return the value
191
191
  # @param [Object] value Any valid value
192
192
  # @return [Hash] Returns the value in the form of hash
193
- def _to_hash(value)
193
+ def _to_hash(value, downcase: false)
194
194
  if value.is_a?(Array)
195
- value.compact.map { |v| _to_hash(v) }
195
+ value.map do |v|
196
+ v.to_hash(downcase: downcase)
197
+ end
196
198
  elsif value.is_a?(Hash)
197
199
  {}.tap do |hash|
198
- value.each { |k, v| hash[k] = _to_hash(v) }
200
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
199
201
  end
200
202
  elsif value.respond_to? :to_hash
201
- value.to_hash
203
+ value.to_hash(downcase: downcase)
202
204
  else
203
205
  value
204
206
  end
@@ -206,8 +208,10 @@ module XeroRuby::Accounting
206
208
 
207
209
  def parse_date(datestring)
208
210
  if datestring.include?('Date')
209
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
210
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
211
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
212
+ original, date, timezone = *date_pattern.match(datestring)
213
+ date = (date.to_i / 1000)
214
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
211
215
  else # handle date 'types' for small subset of payroll API's
212
216
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
213
217
  end
@@ -176,7 +176,7 @@ module XeroRuby::Accounting
176
176
  value = self.send(attr)
177
177
  next if value.nil?
178
178
  key = downcase ? attr : param
179
- hash[key] = _to_hash(value)
179
+ hash[key] = _to_hash(value, downcase: downcase)
180
180
  end
181
181
  hash
182
182
  end
@@ -190,15 +190,17 @@ module XeroRuby::Accounting
190
190
  # For object, use to_hash. Otherwise, just return the value
191
191
  # @param [Object] value Any valid value
192
192
  # @return [Hash] Returns the value in the form of hash
193
- def _to_hash(value)
193
+ def _to_hash(value, downcase: false)
194
194
  if value.is_a?(Array)
195
- value.compact.map { |v| _to_hash(v) }
195
+ value.map do |v|
196
+ v.to_hash(downcase: downcase)
197
+ end
196
198
  elsif value.is_a?(Hash)
197
199
  {}.tap do |hash|
198
- value.each { |k, v| hash[k] = _to_hash(v) }
200
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
199
201
  end
200
202
  elsif value.respond_to? :to_hash
201
- value.to_hash
203
+ value.to_hash(downcase: downcase)
202
204
  else
203
205
  value
204
206
  end
@@ -206,8 +208,10 @@ module XeroRuby::Accounting
206
208
 
207
209
  def parse_date(datestring)
208
210
  if datestring.include?('Date')
209
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
210
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
211
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
212
+ original, date, timezone = *date_pattern.match(datestring)
213
+ date = (date.to_i / 1000)
214
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
211
215
  else # handle date 'types' for small subset of payroll API's
212
216
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
213
217
  end
@@ -661,7 +661,7 @@ module XeroRuby::Accounting
661
661
  value = self.send(attr)
662
662
  next if value.nil?
663
663
  key = downcase ? attr : param
664
- hash[key] = _to_hash(value)
664
+ hash[key] = _to_hash(value, downcase: downcase)
665
665
  end
666
666
  hash
667
667
  end
@@ -675,15 +675,17 @@ module XeroRuby::Accounting
675
675
  # For object, use to_hash. Otherwise, just return the value
676
676
  # @param [Object] value Any valid value
677
677
  # @return [Hash] Returns the value in the form of hash
678
- def _to_hash(value)
678
+ def _to_hash(value, downcase: false)
679
679
  if value.is_a?(Array)
680
- value.compact.map { |v| _to_hash(v) }
680
+ value.map do |v|
681
+ v.to_hash(downcase: downcase)
682
+ end
681
683
  elsif value.is_a?(Hash)
682
684
  {}.tap do |hash|
683
- value.each { |k, v| hash[k] = _to_hash(v) }
685
+ value.map { |k, v| hash[k] = _to_hash(v, downcase: downcase) }
684
686
  end
685
687
  elsif value.respond_to? :to_hash
686
- value.to_hash
688
+ value.to_hash(downcase: downcase)
687
689
  else
688
690
  value
689
691
  end
@@ -691,8 +693,10 @@ module XeroRuby::Accounting
691
693
 
692
694
  def parse_date(datestring)
693
695
  if datestring.include?('Date')
694
- seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
695
- Time.at(seconds_since_epoch).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
696
+ date_pattern = /\/Date\((-?\d+)(\+\d+)?\)\//
697
+ original, date, timezone = *date_pattern.match(datestring)
698
+ date = (date.to_i / 1000)
699
+ Time.at(date).utc.strftime('%Y-%m-%dT%H:%M:%S%z').to_s
696
700
  else # handle date 'types' for small subset of payroll API's
697
701
  Time.parse(datestring).strftime('%Y-%m-%dT%H:%M:%S').to_s
698
702
  end