xero-ruby 2.10.2 → 3.1.3

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